zoukankan      html  css  js  c++  java
  • 寻找i*j=m的个数

    问题描述

    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

    Input

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

    Output

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

    Sample Input

    2

    3 6

    3 3

    Sample Output

    2

    2

    #include <iostream>
    #define N 100000
    using namespace std;
    
    int main()
    {
        int t;
        cin >> t;
        while(t--){
            int n;
            cin >> n;
            int m;
            cin >> m;
            int cnt=0;
            for(int i=1;i<=n;i++){
                if(m%i==0 && m/i<=n)
                    cnt++;
            }
            cout << cnt << endl;
        }
        return 0;
    }

    P.S.很多人把这个题想的太复杂。如果矩阵的每个数都要看,时间复杂度是10^10*2*10,肯定会超时。

    我们仔细想下这个题目,每行最多只有一个数。如果第i行。如果能找到i*j==m并且j<=n,那么就可以。

    每行判断m%i是否为0,m/i就是j如果<=n,那么那个数就是m。cnt++。

  • 相关阅读:
    windows 获取用户的Sid的方法
    sql replace
    jquery ajax超时设置
    tomcat绑定域名
    .Net webservice动态调用
    JAVA SSH 框架介绍
    第一个Nodejs程序
    linux-CentOS6.4下安装oracle11g详解
    CentOS 6.5系统上安装MySQL数据库
    CentOS6.5安装tomcat7
  • 原文地址:https://www.cnblogs.com/xym4869/p/8659868.html
Copyright © 2011-2022 走看看