HDU 3501 Calculation 2
生活随笔
收集整理的這篇文章主要介紹了
HDU 3501 Calculation 2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
傳送門: http://acm.hdu.edu.cn/showproblem.php?pid=3501
解題思路:
小于n與n互質的數的和為Eular(n)×n/2
實現代碼:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std;const int MOD=1000000007 ; /* 小于n與n互質的數的和為Eular(n)×n/2 */ long long Eular(long long n){long long res=n;for(int i=2;i*i<=n;i++){if(n%i==0){res=res/i*(i-1);while(n%i==0)n/=i;}}if(n>1)res=res/n*(n-1);return res; }int main(){long long n;while(cin>>n&&n){long long ans=n*(n+1)/2-n;ans=ans-Eular(n)*n/2;cout<<ans%MOD<<endl;}return 0; }?
轉載于:https://www.cnblogs.com/IKnowYou0/p/6679813.html
總結
以上是生活随笔為你收集整理的HDU 3501 Calculation 2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝桥杯-打印十字图-java
- 下一篇: perl的安装和版本切换工具-perlb