• 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 F-等式


    链接:https://www.nowcoder.com/acm/contest/90/F
    来源:牛客网

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 32768K,其他语言65536K
    64bit IO Format: %lld

    题目描述

    给定n,求1/x + 1/y = 1/n (x<=y)的解数。(x、y、n均为正整数)


    输入描述:

    在第一行输入一个正整数T。
    接下来有T行,每行输入一个正整数n,请求出符合该方程要求的解数。
    (1<=n<=1e9)

    输出描述:

    输出符合该方程要求的解数。
    示例1

    输入

    3
    1
    20180101
    1000000000

    输出

    1
    5
    181

    分析:1/x+1/y=1/n可以化成(x-n)*(y-n)=n^2,(x-n)和(y-n)是n^2的因子,
    只要求出n^2所有因子个数即可。

    #include<cstdio>
    using namespace std;
    int main()
    {
        int T,N;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&N);
            //求N*N的因数 
            int ans=1;
            for(int i=2;i*i<N;i++)
            {
                int temp=0;
                while(N%i==0)
                {
                    temp++;
                    N/=i;
                }
                ans*=(temp*2+1);
            }
            if(N>1) ans*=3;//剩下一个大素数,则N^2有两个大素数,所以ans*(2+1) 
            printf("%d
    ",(ans-1)/2+1);
        }
        return 0;
    }
    View Code


  • 相关阅读:
    27.TreeMap
    26.HashCode
    25.HashTable
    myeclipse快捷键
    spring 配置
    jdbcType和javaType对应关系
    Ajax表单提交
    ajax
    JQuery及Form插件使用
    jsp标准数据库
  • 原文地址:https://www.cnblogs.com/ACRykl/p/8641782.html
Copyright © 2020-2023  润新知