蓝桥杯测试


一步之遥

从昏迷中醒来,小明发现自己被关在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
请按任意键继续. . .

猜你喜欢

转载自www.cnblogs.com/zuimeiyujianni/p/9021443.html