寻找i*j=m的个数(简单模拟)

    xiaoxiao2021-03-26  21

    Problem Link:http://139.129.36.234/problem.php?id=1262

    1262: 寻找i*j=m的个数

    时间限制: 1 Sec   内存限制: 128 MB 提交: 3   解决: 3 [ 提交][ 状态][ 讨论版]

    题目描述

    3*3的矩阵内容: 1 2 3 2 4 6 3 6 9 即a[i][j](1<=i<=n,1<=j<=n)=i*j。 问一个这样n*n的矩阵里面,里面m出现的次数。例如n为3,m为6. 那么出现的次数就是2

    输入

    输入正整数N,表示N例测试(N<=20)。接着输入n(n<=10^5),m(<=10^9)。

    输出

    对每组输入数据,输出m出现的次数。

    样例输入

    2 3 6 3 3

    样例输出

    2 2

    提示

    来源

    2016北京邮电大学复试机试题

    AC code:

    #include<iostream> #include<algorithm> #include<stdio.h> #include<map> #include<math.h> #include<string.h> #include<queue> #include<vector> #include<set> #define LL long long #define exp 1e-9 #define MAXN 1000010 using namespace std; int main() { // freopen("D:\\in.txt","r",stdin); int i,j,k,n,m,l,t,ans; scanf("%d",&t); for(i=1;i<=t;i++) { scanf("%d%d",&n,&m); ans=0; k=(int)sqrt(m); for(j=1;j<=k&&j<=n;j++) { if(m%j==0) { l=m/j; if(l<=n) { if(l!=j) ans+=2; else { ans+=1; } // printf("j=%d l=%d\n",j,l); } } } printf("%d\n",ans); } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-658643.html

    最新回复(0)