首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

hdu 3501 Calculation 二(欧拉函数的引申)

2012-08-27 
hdu 3501 Calculation 2(欧拉函数的引申)Calculation 2Time Limit: 2000/1000 MS (Java/Others)????Memory

hdu 3501 Calculation 2(欧拉函数的引申)

Calculation 2

Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 840????Accepted Submission(s): 371

#include <iostream>#include <stdio.h>#include <memory.h>using namespace std;typedef long long LL;int eular(LL n) //欧拉函数{ int i, ans = n; for(i = 2; i * i <= n; i++) { if(n%i == 0) { ans -= ans/i; while(n%i == 0) n /= i; } } if(n > 1) ans -= ans/n; return ans;}int main(){ LL n, ans; while(scanf("%I64d", &n), n) { ans = n * (n+1) / 2 - n; //总和 ans -= eular(n) * n / 2; //减去互质的总和公式 ans %= 1000000007; //再取模 printf("%I64d\n", ans); } return 0;}

?

热点排行