一步之遥
从昏迷中醒来,小明发现自己被关在X星球的废矿车里。
矿车停在平直的废弃的轨道上。
他的面前是两个按钮,分别写着“F”和“B”。
小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退。
按F,会前进97米。按B会后退127米。
透过昏暗的灯光,小明看到自己前方1米远正好有个监控探头。
他必须设法使得矿车正好停在摄像头的下方,才有机会争取同伴的援助。
或许,通过多次操作F和B可以办到。
矿车上的动力已经不太足,黄色的警示灯在默默闪烁...
每次进行 F 或 B 操作都会消耗一定的能量。
小明飞快地计算,至少要多少次操作,才能把矿车准确地停在前方1米远的地方。
请填写为了达成目标,最少需要操作的次数。
注意,需要提交的是一个整数,不要填写任何无关内容(比如:解释说明等)
#include<cstdio> #include<algorithm> #include<iostream> using namespace std; int main(void) { int Min = 0xFFFFFFF; for(int i=0;i<=1000;i++) for(int j=0;j<=1000;j++) if(97*i-127*j==1 && i+j<Min) { Min = i + j; } cout << Min ; return 0; }
凑平方数
把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够办到的。
比如:0, 36, 5948721
再比如:
1098524736
1, 25, 6390784
0, 4, 289, 15376
等等...
注意,0可以作为独立的数字,但不能作为多位数字的开始。
分组时,必须用完所有的数字,不能重复,不能遗漏。
如果不计较小组内数据的先后顺序,请问有多少种不同的分组方案?
注意:需要提交的是一个整数,不要填写多余内容。
#include<iostream> #include<cstdio> #include<cmath> #include<set> #include<algorithm> const int eps = 10e-8; using namespace std; int a[10]; set<set<long long> >se; set<long long>Sqrtn; void DFS(int i,long long b[],int n) { if(i==10) { set<long long> s; for(int i=0;i<n;i++) s.insert(b[i]); se.insert(s); return ; } long long s = 0; int first = 1; while(i<=9) { s=s*10+a[i]; if(a[i]==0 && first==1) { b[n]=0; DFS(i+1,b,n+1); break; } first = 0; //直接开放计算 long long sqrtn = (long long )(sqrt(s*1.0)+0.5); if(sqrtn * sqrtn == s) { b[n]=s; DFS(i+1,b,n+1); } /* 使用集合计算 if(Sqrtn.find(s) != Sqrtn.end()) { b[n]=s; DFS(i+1,b,n+1); } */ i++; } } int main(void) { long long b[10]; for(int i=0;i<10;i++) a[i]=i; for(long long i=0;i<=100000;i++) Sqrtn.insert(i*i); do { //for(int i=0;i<10;i++) printf("%d",a[i]); //printf("\n"); DFS(0,b,0); }while(next_permutation(a,a+10)); for(set<set<long long> >::iterator it = se.begin();it!=se.end();it++) { set<long long> s = *it; for(set<long long >::iterator x=s.begin();x!=s.end();x++) { printf("%lld ",*x); } printf("\n"); } cout << "sum = " << se.size()<<endl; return 0; }
输出如下:
0 1 4 9 872356 0 1 4 3297856 0 1 4 3857296 0 1 4 5827396 0 1 4 6385729 0 1 4 8567329 0 1 4 9572836 0 1 9 25 36 784 0 1 36 529 784 0 1 49 872356 0 1 64 537289 0 1 256 73984 0 1 625 73984 0 4 16 537289 0 4 25 81 7396 0 4 25 139876 0 4 25 391876 0 4 289 15376 0 9 25 361 784 0 9 81 324 576 0 9 324 15876 0 9 13527684 0 9 34857216 0 9 65318724 0 9 73256481 0 9 81432576 0 16 25 73984 0 16 784 5329 0 25 784 1369 0 25 784 1936 0 25 841 7396 0 36 81 74529 0 36 81 79524 0 36 729 5184 0 36 5184729 0 36 5948721 0 81 324 7569 0 81 576 3249 0 81 729 4356 0 81 2537649 0 81 5673924 0 81 7436529 0 81 9253764 0 324 751689 0 361 529 784 0 576 321489 0 576 349281 0 576 381924 0 729 385641 0 3249 15876 0 4356 71289 0 8649 35721 0 139854276 0 152843769 0 157326849 0 215384976 0 245893761 0 254817369 0 326597184 0 361874529 0 375468129 0 382945761 0 385297641 0 412739856 0 523814769 0 529874361 0 537219684 0 549386721 0 587432169 0 589324176 0 597362481 0 615387249 0 627953481 0 653927184 0 672935481 0 697435281 0 714653289 0 735982641 0 743816529 0 842973156 0 847159236 0 923187456 1 4 9 36 87025 1 4 9 7203856 1 4 9 8673025 1 4 68973025 1 4 85063729 1 4 86397025 1 4 98327056 1 9 25 760384 1 9 784 30625 1 25 36 47089 1 25 3748096 1 25 6390784 1 36 49 87025 1 36 784 9025 1 49 7203856 1 49 8673025 1 289 357604 1 529 760384 1 784 390625 1 784 635209 4 9 361 87025 4 25 81 30976 4 25 3798601 4 289 173056 4 1369 87025 4 1936 87025 4 2809 15376 4 3025 17689 4 3025 18769 4 3025 78961 4 3025 81796 4 5329 67081 9 16 784 3025 9 36 7851204 9 81 324 7056 9 81 576 2304 9 81 4730625 9 81 6734025 9 324 576081 9 576 408321 9 576 423801 9 1764 38025 9 2304 15876 9 4761 38025 9 5184 20736 9 5184 30276 9 6084 35721 9 102576384 9 105637284 9 158306724 9 176305284 9 180472356 9 183467025 9 187635204 9 208571364 9 218034756 9 284057316 9 307265841 9 316057284 9 430728516 9 472801536 9 475283601 9 560837124 9 570684321 9 576432081 9 734681025 9 783104256 9 825470361 9 853107264 16 784 93025 25 361 47089 25 784 39601 25 841 30976 36 81 257049 36 81 497025 36 81 725904 36 19847025 36 57108249 36 71520849 36 80514729 36 94187025 49 361 87025 81 576 23409 81 576 39204 81 729 63504 81 2304 7569 81 3249 7056 81 32970564 81 34257609 81 45239076 81 56972304 81 70459236 81 73925604 81 74390625 169 784 3025 196 784 3025 324 576 1089 324 576 9801 324 6517809 324 8590761 361 784 9025 576 1034289 576 1432809 576 2039184 576 2893401 576 3814209 576 9108324 729 3048516 729 4835601 729 5308416 784 961 3025 1764 893025 2304 751689 3249 576081 4761 893025 5184 207936 5184 603729 7056 321489 7056 349281 7056 381924 7569 408321 7569 423801 8649 731025 15876 23409 15876 39204 20736 51984 20736 95481 30276 51984 30276 95481 38025 47961 63504 71289 1026753849 1042385796 1098524736 1237069584 1248703569 1278563049 1285437609 1382054976 1436789025 1503267984 1532487609 1547320896 1643897025 1827049536 1927385604 1937408256 2076351489 2081549376 2170348569 2386517904 2431870596 2435718609 2571098436 2913408576 3015986724 3074258916 3082914576 3089247561 3094251876 3195867024 3285697041 3412078569 3416987025 3428570916 3528716409 3719048256 3791480625 3827401956 3928657041 3964087521 3975428601 3985270641 4307821956 4308215769 4369871025 4392508176 4580176329 4728350169 4730825961 4832057169 5102673489 5273809641 5739426081 5783146209 5803697124 5982403716 6095237184 6154873209 6457890321 6471398025 6597013284 6714983025 7042398561 7165283904 7285134609 7351862049 7362154809 7408561329 7680594321 7854036129 7935068241 7946831025 7984316025 8014367529 8125940736 8127563409 8135679204 8326197504 8391476025 8503421796 8967143025 9054283716 9351276804 9560732841 9614783025 9761835204 9814072356 sum = 300 -------------------------------- Process exited after 3.196 seconds with return value 0 请按任意键继续. . .