簡單的歐幾里得函數應用。ios
f(x,y) = f(y,x%y);ide
f(x,y) = f(y*t+x,y) t爲非負整數;函數
其時這道題還有好多優化,Discuss裏面好多大神都弄到了0ms。。。Orz優化
我只水過去了。。。。spa
G++ 2400++,用C++ TLE....code
特別的注意 1 的狀況 RE了好屢次blog
1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 long long int rp[1000010]; 7 8 long long int gcd(long long int a,long long int b) 9 { 10 return b == 0 ? a : gcd(b,a%b) ; 11 } 12 13 int main() 14 { 15 long long int top,n,k,i; 16 17 while(cin>>n>>k) 18 { 19 for(i = 1,top = 0;i <= n && top < k; i++) 20 { 21 if(gcd(n,i) == 1) 22 { 23 rp[top++] = i; 24 } 25 } 26 27 if(k%top == 0) 28 { 29 printf("%lld\n",(k/top-1)*n + rp[top-1]); 30 } 31 else 32 { 33 printf("%lld\n",k/top*n + rp[k%top-1]); 34 } 35 36 } 37 38 return 0; 39 }