1. 程式人生 > >[poj 2480] Longge's problem 解題報告 (歐拉函數)

[poj 2480] Longge's problem 解題報告 (歐拉函數)

ios ons src names def ref 技術 esp ++

題目鏈接:http://poj.org/problem?id=2480

題目大意:

技術分享圖片

題解:

技術分享圖片

我一直很欣賞數學題完美的復雜度

#include<cstring>
#include<algorithm>
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;

const int N=(1<<31)+15;
ll n;
int main()
{
    //printf("%lld\n",phi(3));
while (scanf("%lld",&n)!=EOF) { ll ans=n; for (ll i=2;i*i<=n;i++) { if (n%i) continue; //if (i==1) ans++; ll j=0; while (n%i==0) n/=i,j++; ans/=i; ans*=(i-1)*j+i; }
if (n>1) { ans/=n; ans*=2*n-1; } printf("%lld\n",ans); } return 0; }

[poj 2480] Longge's problem 解題報告 (歐拉函數)