锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
2 #include<string.h>
3
4 #define maxlen 2005
5 struct HP {int len,s[maxlen];};
6
7 void PrintHP(HP x){
8 for(int i=x.len;i>=1;i--) printf("%d",x.s[i]);
9 }
10
11 void Str2HP(const char* s ,HP &x)
12 {
13 x.len=strlen(s);
14 for(int i=1;i<=x.len;i++)
15 x.s[i]=s[x.len-i]-'0';
16 }
17
18 void dell(HP & a){
19 int i;
20 for(i = 1; i <= a.len; i++)
21 if(a.s[i]==0)a.s[i] = 9; else break;
22 a.s[i]--;
23 if(a.s[a.len]==0)a.len--;
24 }
25
26
27 bool div2(HP & a){
28 int i; a.s[0] = 0;
29 for(i = a.len; i >= 1; i--)
30 {
31 a.s[i-1] += 10*(a.s[i]%2);
32 a.s[i] /= 2;
33 }
34 if(a.s[a.len]==0)a.len--;
35 return a.s[0]==10;
36 }
37
38
39 char num[maxlen];
40
41 int main(){
42 HP a;
43 int T;
44 for( scanf("%d", &T), getchar(); T > 0; T--){
45 gets(num);
46 gets(num);
47 Str2HP(num,a);
48 if( div2(a) )
49 PrintHP(a);
50 else{
51 HP b = a;
52 if(div2(a) ){
53 dell(b); dell(b);
54 PrintHP(b);
55 }
56 else{
57 dell(b);
58 PrintHP(b);
59 }
60 }
61 printf("\n");
62 if( T > 1)printf("\n");
63 }
64 return 0;
65 }
66
67 /*
68 2
69
70 7
71
72 6
73
74 */
75
2 #include<stdio.h>
3 using namespace std;
4 typedef long long ll;
5 ll ans[24], three[24];
6
7 int c[24];
8 bool visit[24];
9
10 int xunhuan(int c[], int n) {
11 int i, j, cnt = 0;
12 for (i = 0; i < n; i++)
13 visit[i] = false;
14 for (i = 0; i < n; i++)
15 if (!visit[i]) {
16 cnt++;
17 j = i;
18 while (!visit[j]) {
19 visit[j] = true;
20 j = c[j];
21 }
22 }
23 return cnt;
24 }
25
26 ll solve_odd(int n) {
27 int i, j;
28 ll ans = 0;
29 for(i = 0; i < n; i++)
30 {
31 for(j = 0; j < n; j++)
32 c[j] = (j+i)%n;
33 ans += three[ xunhuan(c, n) ];
34 }
35 ans += n * three[n/2+1];
36 return ans / ( 2 * n );
37 }
38
39 ll solve_even(int n) {
40 int i, j;
41 ll ans = 0;
42 for(i = 0; i < n; i++)
43 {
44 for(j = 0; j < n; j++)
45 c[j] = (j+i)%n;
46 ans += three[ xunhuan(c, n) ];
47 }
48 ans += n / 2 * ( three[n/2] + three[n/2+1] );
49 return ans / ( 2 * n );
50 }
51
52 void init() {
53 int i;
54 three[0] = 1;
55 for (i = 1; i < 24; i++)
56 three[i] = three[i - 1]*3;
57
58 for (i = 1; i < 24; i += 2) {
59 ans[i] = solve_odd(i);
60 //printf("%lld\n",ans[i]);
61 }
62 for (i = 2; i < 24; i += 2) {
63 ans[i] = solve_even(i);
64 //printf("%lld\n",ans[i]);
65 }
66 }
67
68 int main() {
69 int i;
70 // while(scanf("%d",&i)!=EOF)
71 // solve_odd(i);
72 init();
73 while (scanf("%d", &i) != EOF) {
74 if (i == -1)break;
75 printf("%lld\n", ans[i]);
76 }
77 }
2 #include<string.h>
3 #define max(x, y) ((x)>(y)?(x):(y))
4 int C[32][32]; //C[n][k]琛ㄧず灝忎簬2^n鐨勬墍鏈夌殑鏁板惈鑷沖皯k涓?鐨勪釜鏁?/span>
5
6 void init(){
7 int i, j;
8
9 for(i = 0; i < 32; i++)
10 C[i][0] = C[i][i] = 1;
11
12 for(i = 1; i < 32; i++)
13 for(j = 1; j < i; j++)
14 C[i][j] = C[i-1][j-1] +C[i-1][j];
15
16 for(i = 0; i < 32; i++)
17 for(j = i-1; j >= 0; j--)
18 C[i][j] += C[i][j+1];
19 }
20
21 int gao(int u){
22 int value[32], n = 0;
23 while(u){
24 value[n++] = u%2;
25 u/=2;
26 }
27
28 int i, j, ans = 0;
29 for(i = 1; i < n-1; i++)
30 ans += C[i][ i/2 + 1 ];
31
32 int cnt = 1, least;
33 least = n % 2==0 ? n/2 : n/2+1;
34 for(i = n-2; i >= 0; i--)
35 if(value[i]){
36 j = max( 0, least-(n-i-cnt) );
37 if(j > i)return ans;
38 ans += C[i][j];
39 cnt++;
40 }
41
42 return ans;
43 }
44
45 int main(){
46 int a, b;
47 init();
48
49 while(scanf("%d %d", &a, &b)!=EOF)
50 printf("%d\n",gao(b+1) - gao(a) );
51 }
榪欑被棰樼洰瑕佸啓鐨勫揩
榪欓亾棰樻槸姣旇緝緇忓吀鐨勫驚鐜帓鍒楄鏁幫紝鏈?N 涓疆鎹 P^0 = r, P^1, P^2, P^(n-1)} r涓哄崟浣嶇疆鎹?br> 鍐欎釜灝忕▼搴忚瀵?錛屽彂鐜?P^x 鐨勫驚鐜粨鎭板ソ鏄痝cd錛坸 , N錛?br>
榪欐牱鎴戜滑灝辨湁涓涓緝濂界殑姹傚拰寮忓瓙 錛?br>
浣哊鍙埌10^9錛岃繖涓眰鍜屽紡鐩存帴鐢ㄤ笉鐜板疄錛岀戶緇瀵燂紝鍙戠幇榪欎簺鏁伴兘鏄疦鐨勭害鏁幫紝鑷劧浼氭兂鏀瑰彉姹傚拰欏哄簭錛屽厛鑰冭檻姣忎釜綰︽暟錛屾垜鍙堝啓浜嗕釜灝忕▼搴忚緭鍑烘瘡涓害鏁扮殑鏁伴噺錛堜竴寮濮嬪氨鐭ラ亾浠栧ぇ姒傝窡嬈ф媺鏁版湁鍏崇郴錛屼絾娌℃湁鍙戠幇鏄庢樉鐨勭Н鎬э級錛屾墦鍑鴻〃鏉ヤ竴鐪嬶紝鍘熸潵鍥犲瓙x鐨勬暟閲忔槸Phi錛圢/x錛夛紱榪欐牱寮忓瓙灝卞彉鎴愪簡
φ(N/pi)灝辨槸 1 -- N 涓墍鏈夋弧瓚砱cd(i,N)=pi 鐨?i 鐨勪釜鏁?br> (Hint gcd錛坕,N錛?pi 絳変環浜?gcd(i/pi,N/pi)=1 )
瑕佺害鏁板敖閲忕殑澶氾紝灝辮涓嶅悓鐨勭礌鍥犲瓙灝介噺澶氾紝N鏈澶氫笉浼氭湁10涓笉鍚岀殑绱犲洜瀛愶紝綰︽暟涓嶄細瓚呰繃1024涓紝鑰屼笖綰︽暟瓚婂錛岀害鏁板氨浼氬彉灝忥紝姹傜害鏁扮殑嬈ф媺鏁拌櫧鐒舵槸O( sqrt(N) )鐨勶紝浣嗛渶瑕佸浜庡叾涓竴涓害鏁拌綆楄秴榪?0嬈$殑涓嶄細瓚呰繃3涓紝鏈変簡榪欎簺浼拌錛岃櫧鐒跺叿浣撶殑綆楁硶澶嶆潅搴︿笉鐭ラ亾錛?鎴戝喅瀹氬啋闄╄瘯璇曪紝搴旇涓嶄細瓚呮椂銆傜粨鏋滆窇浜?00ms錛岃繕鏄瘮杈冪悊鎯崇殑