zoukankan      html  css  js  c++  java
  • F

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

    题目描述

    给定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

    -> yn + xn - xy = 0

    -> yn + xn - xy -n^2 +n^2 = 0

    -> n^2 = (n - x) * ( n - y)

    即:求n^2的约数组合数,n^2的质因数与n的质因数相同,个数为n的两倍

    代码:

    #include <algorithm>
    #include <bitset>
    #include <cmath>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    #include <map>
    #include <queue>
    #include <set>
    #include <stack>
    #include <string>
    #include <vector>
    using namespace std;
    #define is_lower(c) (c >= 'a' && c <= 'z')
    #define is_upper(c) (c >= 'A' && c <= 'Z')
    #define is_alpha(c) (is_lower(c) || is_upper(c))
    #define is_digit(c) (c >= '0' && c <= '9')
    #define min(a, b) ((a) < (b) ? (a) : (b))
    #define max(a, b) ((a) > (b) ? (a) : (b))
    #define PI acos(-1)
    #define IO                 
      ios::sync_with_stdio(0); 
      cin.tie(0);              
      cout.tie(0);
    #define For(i, a, b) for (int i = a; i <= b; i++)
    typedef long long ll;
    typedef unsigned long long ull;
    typedef pair<int, int> pii;
    typedef pair<ll, ll> pll;
    typedef vector<int> vi;
    const ll inf = 0x3f3f3f3f;
    const double EPS = 1e-10;
    const ll inf_ll = (ll)1e18;
    const ll maxn = 100005LL;
    const ll mod = 2012LL;
    const int N = 100000 + 5;
    int main() {
        int T,n;
        cin>>T;
        while(T--) {
            cin>>n;
            int ans[1000]={0};
            int len = 1;
            for(int i = 2; i * i <= n; i++) {
                if(n % i == 0) {
                    while(n % i == 0) {
                        ans[len]++;
                        n /= i;
                    }
                    len++;
                }
            }
            if(n != 1)
                ans[len]++;
            ll res = 1;
            for(int i = 1; i <= len ; i++)
                res *= ans[i] * 2 + 1;
            res = (res + 1) / 2;
            cout << res << endl;
        }
    }
    宝剑锋从磨砺出 梅花香自苦寒来
  • 相关阅读:
    0-1性能测试需求分析
    1-10jmeter关联,正则表达式(待巩固)
    1-9jmeter集合点,并发操作
    1-8.jmeter设置断言(检查点)
    1-6jmeter性能测试基础
    泛型中的协变和逆变
    jsPlumb
    jQuery UI vs Kendo UI & jQuery Mobile vs Kendo UI Mobile
    31天重构
    Visual Studio 小工具
  • 原文地址:https://www.cnblogs.com/GHzcx/p/8644625.html
Copyright © 2011-2022 走看看