zoukankan      html  css  js  c++  java
  • [CSP-S模拟测试]:神炎皇(数学)

    题目描述

      神炎皇乌利亚很喜欢数对,他想找到神奇的数对。
      对于一个整数对$(a,b)$,若满足$a+bleqslant n$且$a+b$是$ab$的因子,则称为神奇的数对。请问这样的数对共有多少呢?


    输入格式

    一行一个整数$n$。


    输出格式

    一行一个整数表示答案,保证不超过$64$位整数范围。


    样例

    样例输入:

    21

    样例输出:

    11


    数据范围与提示

    对于$20\%$的数据,$nleqslant 1000$;
    对于$40\%$的数据,$nleqslant 100000$;
    对于$60\%$的数据,$nleqslant 10000000$;
    对于$80\%$的数据,$nleqslant 1000000000000$;
    对于$100\%$的数据,$nleqslant 100000000000000$。


    题解

    总是喜欢在考场上刚数学题,总是刚不出来,总是就差一步……

    不妨设一个神奇的数对$(a,b)$,$d=gcd(a,b)$,$a'=frac{a}{d}$,$b'=frac{b}{d}$。

    我们要满足$(a+b)|ab$($|$为整除),也就是要满足$(a'+b')d|(a'b')d^2$

    消去一个$d$,则我们可以得到$(a'+b')|(a'b')d$。

    又$ecause gcd(a',b')=1$,根据辗转相除法还可以得到$(a'+b',a')=(a'+b',b')=1$(手打$gcd$的方法),$ herefore gcd(a'+b',a'b')=1$。

    也就是说$(a'+b')$一定不是$a'b'$的因子,那么其只能是$d$的因子,则条件转化为求$(a'+b')|d$。

    不妨设$m=(a'+b'),d=km$,则$km^2leqslant n$。

    而$m$只用枚举到$sqrt{n}$即可。

    发现对于每一个$m$,$k$有$leftlfloorfrac{n}{m^2} ight floor$种不同的解。

    接下来考虑$m$的内部情况,接着利用辗转相除法,可以得到其个数为$phi(i)$,于是答案就是:

    $$sum limits_{i=1}^n phi(i)leftlfloorfrac{n}{m^2} ight floor$$

    时间复杂度:$Theta(sqrt{n})$。

    期望得分:$100$分。

    实际得分:$100$分。


    代码时刻

    #include<bits/stdc++.h>
    using namespace std;
    long long n;
    long long ans;
    int phi[10000001],prime[10000001];
    bool vis[10000001];
    int main()
    {
    	scanf("%lld",&n);
    	int sqr=sqrt(n);
    	phi[1]=1;
    	for(int i=2;i<=sqr;i++)
    	{
    		if(!vis[i])
    		{
    			vis[i]=1;
    			prime[++prime[0]]=i;
    			phi[i]=i-1;
    		}
    		for(int j=1;j<=prime[0]&&i*prime[j]<=sqr;j++)
    		{
    			vis[i*prime[j]]=1;
    			if(i%prime[j])phi[i*prime[j]]=phi[i]*(prime[j]-1);
    			else{phi[i*prime[j]]=phi[i]*prime[j];break;}
    		}
    		ans+=1LL*phi[i]*(n/i/i);
    	}
    	printf("%lld",ans);
    	return 0;
    }

    rp++

  • 相关阅读:
    Android ViewGroup使用小结
    背包问题
    u3d demo起步第二章
    三国武将查询系统 //Java 訪问 数据库
    全端project师必备技能汇总
    记一次内存泄漏调试(memory leak)-Driver Monkey
    备战软考(4) 软考下午题攻略
    HDU1392:Surround the Trees(凸包问题)
    Nginx系列(二)--模块化
    《与古为徒与娟娟发屋》:书法家们刻意回避的一个问题:为什么推崇古代平民的作品而忽略当代平民的作品。4星。
  • 原文地址:https://www.cnblogs.com/wzc521/p/11650824.html
Copyright © 2011-2022 走看看