]]>fzu 1971 A math problemhttp://www.shnenglu.com/AmazingCaddy/archive/2010/10/21/130793.htmlAmazingCaddyAmazingCaddyThu, 21 Oct 2010 12:54:00 GMThttp://www.shnenglu.com/AmazingCaddy/archive/2010/10/21/130793.htmlhttp://www.shnenglu.com/AmazingCaddy/comments/130793.htmlhttp://www.shnenglu.com/AmazingCaddy/archive/2010/10/21/130793.html#Feedback0http://www.shnenglu.com/AmazingCaddy/comments/commentRss/130793.htmlhttp://www.shnenglu.com/AmazingCaddy/services/trackbacks/130793.html闃呰鍏ㄦ枃
]]>poj 1286 Necklace of Beadshttp://www.shnenglu.com/AmazingCaddy/archive/2010/06/03/117136.htmlAmazingCaddyAmazingCaddyThu, 03 Jun 2010 12:44:00 GMThttp://www.shnenglu.com/AmazingCaddy/archive/2010/06/03/117136.htmlhttp://www.shnenglu.com/AmazingCaddy/comments/117136.htmlhttp://www.shnenglu.com/AmazingCaddy/archive/2010/06/03/117136.html#Feedback0http://www.shnenglu.com/AmazingCaddy/comments/commentRss/117136.htmlhttp://www.shnenglu.com/AmazingCaddy/services/trackbacks/117136.htmlhttp://162.105.81.212/JudgeOnline/problem?id=1286
1#include<iostream> 2usingnamespace std; 3typedef __int64 ll; 4int gcd( int a, int b ){ return b ? gcd( b, a % b ) : a; } 5ll pow( ll a, ll n ) 6{ 7 ll ans =1, d = a; 8while( n ) 9{ 10if( n &1 ) ans = ans * d; 11 d *= d; 12 n >>=1; 13 } 14return ans; 15} 16 17ll solve( int n ) 18{ 19int i; 20 ll sum =0; 21if( n ==0 )return0; 22for( i =1; i <= n; i++ ) 23 sum += pow( 3, gcd( i, n ) ); 24if( n %2==0 ) 25{ 26 sum += pow( 3, n /2 ) * n /2; 27 sum += pow( 3, n /2+1 ) * n /2; 28 } 29else sum += pow( 3, n /2+1 ) * n; 30return sum / n /2; 31} 32 33int main( ) 34{ 35int n; 36while( scanf("%d",&n) && n !=-1 ) 37{ 38 printf("%I64d\n",solve( n )); 39 } 40return0; 41}