国旅,一场须求勘误的进度

简单题

   
聊天的时候,朋友说,你好像很欣赏游山玩水啊!我说,是啊,每年出去散步是十一分须求的。

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)

  小编去的地点不多 ,港澳台再加个泰王国 国内大茂山,三清山如何的也不多。

Total Submission(s) : 19   Accepted Submission(s) : 14

 
古人云,读万卷书,行万里路。而本身却认为阅读与行动的界别大去了。有个别东西,除非经历,无以感触认知。

Font: Times New Roman | Verdana | Georgia

   旅游给自家几大启发:

Font Size: ← →

吉利明晚吃鸡

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K
(Java/Other)

Total Submission(s) : 1379   Accepted Submission(s) : 501

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

新近盛行吃鸡,那就间接出口一行”Winner winner ,chicken
dinner!”(未有双引号)
模板代码:
#include <stdio.h>
int main(){
printf(“hello world\n”);
return 0;
}

Input

没有输入

Output

输出1行”Winner winner ,chicken dinner!”注意要换行

Sample Output

Winner winner ,chicken dinner!

解题报告:

签到题

#include <stdio.h>
int main(){
printf(“Winner winner ,chicken dinner!\n”);
return 0;
}

 

1002      

跳舞

Time Limit : 3000/1500ms (Java/Other)   Memory Limit : 65535/32768K
(Java/Other)

Total Submission(s) : 354   Accepted Submission(s) : 38

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

一天YZW参预了学校协会交际舞活动,活动的启幕活动方分别给男子和女孩子从一-n展开编号,根据从小到明朝时针的办法进行男女搭档分配,相同编号的孩子组合成一对,例如壹号哥们与壹号女孩子配对,以此类推。可是YZW对内部2个小小妹一见钟情,于是趁机的她向管理员提出了三种操作
1.在那种情形下,管理员会给出移动的动向和尺寸,然后全体的男子向着那一个主旋律移动x个职位。贰.管理员会把相近的奇数和偶数地点上的男子交流。
在里头女孩子的地方是不会变的。不过YZW不知底通过那么些Q次操作后,他本身身在何方,能或无法到达自身喜爱的小四妹身边。

Input

输入四个T代表T组数据(T<=10),每组输入3个n和q(2≤n≤三千00,1≤q≤一千000,当中n为偶数),分别表示有n对儿女和有q次操作。
接下去是q行,每1行输入:
1.x意味全数男生移动的地点的尺寸。同时x>0表示顺时针移动,x<0象征逆时针移动。
二.意味着管理员会把相邻的奇数和偶数地点上的男士交换。

Output

输出1号到n号小三嫂配对的独家是几号男人。

Sample Input

1

6 3

1 2

2

1 2

Sample Output

4 3 6 5 2 1

 

解题报告:记录第贰个和首个男人的岗位n一和n二,将享有的操作的熏陶加在那些两任务上,当中第二种操作相当于n1和n二加上可能减去x,第二种操作也就是奇数地点上的数+一,偶数位上的数-一.然后经过这样四个岗位推导出装有的任何的任务即可

代码:

#include<iostream>

#include<cstdio>

#include<cmath>

#include<string>

#include<queue>

#include<algorithm>

#include<stack>

#include<cstring>

#include<vector>

#include<list>

#include<bitset>

#include<set>

#include<map>

using namespace std;

#define LL long long

#define pi (4*atan(1.0))

#define eps 1e-8

#define bug(x)  cout<<“bug”<<x<<endl;

const int N=1e6+10,M=7e6+10,inf=1e9+10,MOD=10;

const LL INF=1e18+10;

 

int a[N];

int main()

{

    int T;

    scanf(“%d”,&T);

    while(T–)

    {

        int n,q;

        scanf(“%d%d”,&n,&q);

        int s=1,e=2;

        while(q–)

        {

            int t;

            scanf(“%d”,&t);

            if(t==1)

            {

                LL x;

                scanf(“%lld”,&x);

                x%=n;

                s+=x;

                e+=x;

                if(s>n)s-=n;

                if(s<=0)s+=n;

                if(e>n)e-=n;

                if(e<=0)e+=n;

            }

            else

            {

                if(s%2)s++;

                else s–;

                if(e%2)e++;

                else e–;

            }

        }

        for(int i=1;i<=n/2;i++)

        {

            a[s]=i*2-1;

            a[e]=i*2;

            s+=2;

            e+=2;

            if(s>n)s-=n;

            if(e>n)e-=n;

        }

        for(int i=1;i<=n;i++)

            printf(“%d%c”,a[i],(i==n?’\n’:’ ‘));

    }

    return 0;

}

1003

那是道水题

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K
(Java/Other)

Total Submission(s) : 827   Accepted Submission(s) : 179

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

有四个球在尺寸为L的直线跑道上移步,两端为墙。0时刻小球a以壹m/s的进程从源点向终极运动,t时刻小球b以平等的速度从极限向起源运动。问T时刻两球的离开。那里小球与小球、小球与墙的冲击均为弹性碰撞,全部进度没有能量损失。

Input

先输入多个q,代表q组数据,然后每组一个整数 L,t,T。
1<=L<=1000;0<=t<=1000;t<=T<=1000;

Output

叁个整数,代表答案。

Sample Input

2

10 4 7

8 3 9

Sample Output

0

5

解题报告:单独驰念每种小球,分别求出最终小球的岗位pos1,pos二。答案即为abs(pos1-pos二)。

代码:

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int main()
{
    int L,t,T;
    int cas;
    scanf(“%d”,&cas);
    while(cas–&&scanf(“%d %d %d”,&L,&t,&T)){
        int n=T%(2*L);
        int l;
        if(n>=L){
            l=L-(n-L);
        }else{
            l=n;
        }
        int r;
        int n2=(T-t)%(2*L);
        if(n2>=L){
            r=L-(n2-L);
        }else{
            r=n2;
        }
        r=L-r;
        int ans=r-l;
        if(ans>=0){
            printf(“%d\n”,ans);
        }else{
            printf(“%d\n”,-1*ans);
        }
    }
    return 0;
}

 

1004

 

小廖的美貌子串

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K
(Java/Other)

Total Submission(s) : 7   Accepted Submission(s) : 0

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

小廖近来沉迷于字符串,发现了1个标题,不可能一挥而就,13分烦躁。你能支援他吧?
对于一个长短为n的字符串,能够从大小为m的字母表里挑选构成。
概念1个字符串是精粹的就满足:如果它的保有字符适当改变种种后能够结合贰个回文串并且长度为奇数。
那么难题来了,大小为m的字母表组成的持有大大小小为n的串有m^n个,其包蕴美貌的子串的总和是有点?

Input

先是输入二个t,代表t组数据t<=十0
每组数据输入n,m,n代表字符串的长短,m代表字母表的大大小小。
1<=n,m<=2000

Output

出口结果mod一千000007。(mod表示取余)

Sample Input

3

2 2

3 2

10 3

Sample Output

8

32

1490526


解题报告:

设dp[i][j]表示长度为i的串有j种字符出现单数次的个数。

dp[i][j]只能由dp[i-1][j-1]和dp[i-1][j+1]转化来。

借使长度为i-1的串有j-一种字符出现单数十次,能够在余下的(m-j+1)种字符选用贰个;

假若长度为i-一的串有j+一种字符出现单多次,能够在(j+1)种字符里任选贰个;

所以状态转移方程为:
dp[i][j]=(dp[i-1][j-1]*(m-j+1)+dp[i-1][j+1]*(j+1))

小心若能构成回文串,当长度为奇数时j=一,不然j=0.

枚举奇数长度i的串,其岗位能够有(n-i+1)种,别的n-i位任意补齐,所以对于长度为i有

dp[i][1]*p[n-i]*(n-i+1)个,p[n-i]代表m的n-i次方。累加求和取得

ans=(ans+dp[i][i&1]*po[n-i]%mod*(n-i+1)%mod)%mod;

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<queue>
#include<algorithm>
#include<stack>
#include<cstring>
#include<vector>
#include<list>
#include<bitset>
#include<set>
#include<map>
#include<time.h>
#define F(x) (3*x*x-x)/2
using namespace std;
typedef long long ll;
const int maxn=2000+10;
const int mod=1e9+7;
int n,m;
ll dp[maxn][maxn],po[maxn];
int main()
{
    int t;
    scanf(“%d”,&t);
    while(t–)
    {
        scanf(“%d%d”,&n,&m);
        dp[0][0]=1;dp[0][1]=0;
        for(int i=1;i<=n;i++)
        {
            dp[i][0]=dp[i-1][1];
            dp[i][i]=(dp[i-1][i-1]*(m-i+1))%mod;
            int j;
            if(i&1)j=1;
            else j=2;
            for(;j<i;j+=2)
            {
                dp[i][j]=(dp[i-1][j-1]*(m-j+1)+dp[i-1][j+1]*(j+1))%mod;
            }
        }
        po[0]=1;
        for(int i=1;i<=n;i++)
        po[i]=(po[i-1]*m)%mod;
        ll ans=0;
        for(int i=1;i<=n;i++)
        {
                    if(i%2)
            ans=(ans+dp[i][i&1]*po[n-i]%mod*(n-i+1)%mod)%mod;
        }
        printf(“%lld\n”,ans);
    }
    return 0;
}

 

1005      

矩阵

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K
(Java/Other)

Total Submission(s) : 168   Accepted Submission(s) : 52

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

倘诺你有一个矩阵,有诸如此类的运算A^(n+一) = A^(n)*A (*代表矩阵乘法)
今日已知四个n*n矩阵A,S =
A+A^二+A^三+…+A^k,输出S,因为每七个因素太大了,输出的种种成分模10

Input

先输入二个T(T<=10),每组1个n,k(一<=n<=30, k<=1000000)

Output

出口叁个矩阵,各种成分模10(行末尾未有多余空格)

Sample Input

1

3 2

0 2 0

0 0 2

0 0 0

Sample Output

0 2 4

0 0 2

0 0 0

解题报告:

倍增,复杂度log(k)*n*n

代码:

#include<iostream>

#include<cstdio>

#include<cmath>

#include<string>

#include<queue>

#include<algorithm>

#include<stack>

#include<cstring>

#include<vector>

#include<list>

#include<bitset>

#include<set>

#include<map>

using namespace std;

#define LL long long

#define pi (4*atan(1.0))

#define eps 1e-8

#define bug(x)  cout<<“bug”<<x<<endl;

const int N=1e6+10,M=7e6+10,inf=1e9+10,MOD=10;

const LL INF=1e18+10;

int n;

struct Matrix

{

    short a[31][31];

    Matrix()

    {

        memset(a,0,sizeof(a));

    }

    void init()

    {

        for(int i=0;i<n;i++)

            for(int j=0;j<n;j++)

                a[i][j]=(i==j);

    }

    Matrix operator + (const Matrix &B)const

    {

        Matrix C;

        for(int i=0;i<n;i++)

            for(int j=0;j<n;j++)

                C.a[i][j]=(a[i][j]+B.a[i][j])%MOD;

        return C;

    }

    Matrix operator * (const Matrix &B)const

    {

        Matrix C;

        for(int i=0;i<n;i++)

            for(int k=0;k<n;k++)

                for(int j=0;j<n;j++)

                   
C.a[i][j]=(C.a[i][j]+a[i][k]*B.a[k][j])%MOD;

        return C;

    }

    Matrix operator ^ (const int &t)const

    {

        Matrix A=(*this),res;

        res.init();

        int p=t;

        while(p)

        {

            if(p&1)res=res*A;

            A=A*A;

            p>>=1;

        }

        return res;

    }

}a[100],base;

 

int main()

{

    int T;

    scanf(“%d”,&T);

    while(T–)

    {

        int k;

        scanf(“%d%d”,&n,&k);

        for(int i=0;i<n;i++)

        for(int j=0;j<n;j++)

        scanf(“%d”,&a[1].a[i][j]);

        base=a[1];

        for(int i=2;i<=20;i++)

        {

            a[i]=a[i-1]+(a[i-1])*base;

            base=base*base;

        }

        base=a[1];

        Matrix now,ans;

        now.init();

        for(int i=19;i>=0;i–)

        {

            if((1<<i)&k)

            {

                ans=ans+a[i+1]*now;

                now=now*(base^(1<<i));

            }

        }

        for(int i=0;i<n;i++)

        {

            for(int j=0;j<n;j++)

                printf(“%d%c”,ans.a[i][j],(j==n-1?’\n’:’ ‘));

        }

    }

    return 0;

}

1006      

大厦

Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65535/32768K
(Java/Other)

Total Submission(s) : 41   Accepted Submission(s) : 2

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

给您二个n(一<=n<=一千)层楼的摩天天津大学学厦,每1楼里面有m(1<=m<=一千)房间,
各类房间一定的金钱X(一<=x<=一千),借使分裂楼层的房间是互通的,相同楼层的房间是不互通的。也正是说每层只可以取一个,现在给你1个捡钱的火候。捡钱的办法各异,会造成您取得的钱的差别,求大概捡到的钱的前k大的和

Input

输入1个T,表示T组样例;
每组数据第叁行输入n,m,k
接下去输入n行,每行m个数,代表这么些房间拥有的金钱

Output

出口或许捡到的钱的前k大的和

Sample Input

1

3 4 5

1 2 3 4

5 6 7 8

1 2 3 4

Sample Output

75

解题报告:

倘若任意两层为集合A
B(从大到小排序)对于B集合的成分B[i],分明它和A[1]组合值最大,

如果B[i]+A[j]是前K大值中的一个,那么B[i]+A[k](1<=k <
j)必然也是前K大的,

所以B[i]+A[j]被选则B[i]+A[j-1]事先就被选了,

就此优先队列中只需保险Size(B)个要素,首先把A[1]+B[i]凡事进队,

老是从队首拿出1个整合(i,j)(表示A[i]+B[j]),把A[i+1]+B[j]进队,

直到拿出K个成分停止,即为那七个聚众合并的前K大

n层的话只要把每一趟获得的结果和其余层遵照那样处理就足以了

代码:

#include<iostream>

#include<cstdio>

#include<cmath>

#include<string>

#include<queue>

#include<algorithm>

#include<stack>

#include<cstring>

#include<vector>

#include<list>

#include<bitset>

#include<set>

#include<map>

using namespace std;

#define LL long long

#define pi (4*atan(1.0))

#define eps 1e-8

#define bug(x)  cout<<“bug”<<x<<endl;

const int N=1e3+10,M=7e6+10,inf=1e9+10,MOD=10;

const LL INF=1e18+10;

 

 

int a[N],k,n,m;

vector<int>v;

struct is

{

    int x,pos;

    is(){}

    is(int _x,int _pos):x(_x),pos(_pos){}

    bool operator <(const is &c)const

    {

        return x<c.x;

    }

};

int cmp(int x,int y)

{

    return x>y;

}

vector<int> update(vector<int>v)

{

    vector<int>ans;

    if(v.size()*m<=k)

    {

        for(int i=0;i<v.size();i++)

        for(int j=1;j<=m;j++)

            ans.push_back(v[i]+a[j]);

        sort(ans.begin(),ans.end(),cmp);

    }

    else

    {

        priority_queue<is>q;

        for(int i=1;i<=m;i++)

        {

            q.push(is(a[i]+v[0],0));

        }

        int tmp=k;

        while(tmp–)

        {

            is x=q.top();

            ans.push_back(x.x);

            q.pop();

            if(x.pos+1<v.size())

            q.push(is(x.x-v[x.pos]+v[x.pos+1],x.pos+1));

        }

    }

    return ans;

}

int main()

{

    int T;

    scanf(“%d”,&T);

    while(T–)

    {

        scanf(“%d%d%d”,&n,&m,&k);

        v.clear();

        v.push_back(0);

        for(int i=1;i<=n;i++)

        {

            for(int j=1;j<=m;j++)

                scanf(“%d”,&a[j]);

            v=update(v);

        }

        LL ans=0;

        for(int i=0;i<k;i++)

            ans+=v[i];

        printf(“%lld\n”,ans);

    }

    return 0;

}

1007      

一流牛奶

Time Limit : 6000/3000ms (Java/Other)   Memory Limit : 65535/32768K
(Java/Other)

Total Submission(s) : 52   Accepted Submission(s) : 6

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

百货公司有 n 种牛奶,每个牛奶的深浅为 ai/一千 。
Iris 想合成出1种浓度为 k/一千的极品牛奶,每一种牛奶能够买任意杯,她至少供给买多少杯牛奶吧?

Input

多组输入,每组数据第二行输入 k、n ,第一行输入 n 个数ai,表示 n
种牛奶的浓淡。
0<=k<=1000 , 一<=n<=1000000, 0<=ai<=1000 。
所给多少都以整数。

Output

每组数据输出三个数,表示最少要买多少杯牛奶。 假诺不可能合成浓度为 k/一千的牛奶,就输出 -1 。

Sample Input

50 2

100 25

Sample Output

3

解题报告:要注意到浓度绝不会超过一千/一千。

只要选拔m杯牛奶,则 (a1+a二+……+am) / m =
n,变换一下为(a一-n)+(a二-n)+……+(am-n) = 0。即要选 m杯牛奶,其浓度减
n之和为0。而浓度不超越一千,故(a一-n)+(a贰-n)+….+(as-n)的和肯定在
-一千~一千之间,所以能够 bfs解,相当于找一条浓度0 到浓度0
的门道,边长为(ai-n),这样到各样只怕浓度点的距离一定是方今的。

代码:

#include<iostream>

#include<cstdio>

#include<cmath>

#include<string>

#include<queue>

#include<algorithm>

#include<stack>

#include<cstring>

#include<vector>

#include<list>

#include<bitset>

#include<set>

#include<map>

using namespace std;

#define LL long long

#define pi (4*atan(1.0))

#define eps 1e-8

#define bug(x)  cout<<“bug”<<x<<endl;

const int N=1e3+10,M=7e6+10,inf=1e9+10,MOD=10;

const LL INF=1e18+10;

 

vector<int>v[5];

int flag[N][2];

int dp[N][2];

int main()

{

    int k,n;

    while(~scanf(“%d%d”,&k,&n))

    {

        v[0].clear();

        v[1].clear();

        memset(flag,0,sizeof(flag));

        memset(dp,-1,sizeof(dp));

        int fuck=0;

        for(int i=1;i<=n;i++)

        {

            int x;

            scanf(“%d”,&x);

            if(x==k)fuck=1;

           
if(x<k&&!flag[k-x][0])v[0].push_back(k-x),flag[k-x][0]=1;

           
if(x>k&&!flag[x-k][1])v[1].push_back(x-k),flag[x-k][1]=1;

        }

        if(fuck)

        {

            printf(“1\n”);

            continue;

        }

        dp[0][0]=0;

        dp[0][1]=0;

        for(int kk=0;kk<=1;kk++)

        for(int i=0;i<v[kk].size();i++)

        {

            for(int j=v[kk][i];j<=1000;j++)

            {

                if(dp[j-v[kk][i]][kk]!=-1)

                {

                   
if(dp[j][kk]==-1)dp[j][kk]=dp[j-v[kk][i]][kk]+1;

                    else
dp[j][kk]=min(dp[j][kk],dp[j-v[kk][i]][kk]+1);

                }

            }

        }

        int ans=inf;

        for(int i=1;i<=1000;i++)

        if(dp[i][0]!=-1&&dp[i][1]!=-1)

        {

            ans=min(ans,dp[i][0]+dp[i][1]);

        }

        if(ans==inf)printf(“-1\n”);

        else printf(“%d\n”,ans);

    }

    return 0;

}

 

1008      

子序列

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K
(Java/Other)

Total Submission(s) : 499   Accepted Submission(s) : 270

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

长度为 n
的队列,把它划分成两段非空的子连串,定义权值为:两段子类别的最大值的差的相对值。求也许的最大的权值。
数码范围:
二 <= n <= 10^6 , 0 < 种类内的数 <= 10^陆 。

Input

首先行输入贰个 T,表示有 T 组数据。
接下去有 T 组数据,每组数据的首先行输入三个数 n ,第1行输入 n 个数。

Output

每组数据输出只怕的最大的权值。

Sample Input

1

3

1 2 3

Sample Output

2

解题报告:

签到题,代码:

#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
int a[1000010];
int main()
{
  int t;
  cin>>t;
  while(t–)
  {
   int maxn=0;int k,n;
   memset(a,0,sizeof(a));
   cin>>n;
   for(int i=1;i<=n;i++){
  
   cin>>a[i];
   if(a[i]>maxn)
   {
   maxn=a[i];
   k=i;
  }
  
  
                        }
    int k2;
    if(k!=1&&k!=n)
    k2=min(a[1],a[n]);
    else if(k==a[1])
    {
    
     k2=a[n];
    
}
else
k2=a[1];
cout<<maxn-k2<<endl;
  }
return 0;
}

 

1009

 

MDD的自由数

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K
(Java/Other)

Total Submission(s) : 61   Accepted Submission(s) : 28

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

MDD随机生成了n(n<le5)个随机数x(x<=一e九),
那n个随机数排成1个队列,MDD有q(q<=le伍)个询问,
各种询问给您三个a,问你这一个行列中有稍许个区间的最大公约数不为a

Input

先是行输入三个T,表示T组测试样例
每组样例包罗1个n,表示n个随机数
再输入1个Q,表示Q个询问
种种询问输入多个a

Output

各样询问输出有微微个区间的gcd不为a

Sample Input

1

5

1 2 4 4 1

4

1

2

3

4

Sample Output

6

12

15

12

题解:思考到假诺固定区间左端点L,那么右端点从L+一变化到n的进程中gcd最多变化logn次(因为每一次变更至少除以二),那么大家就足以枚举左端点,然后每便二分值接二连三的间距,然后都存到map里,只供给将富有的区间个数减去区间gcd=x的个数正是主题的答案

代码:#include<iostream>

#include<cstdio>

#include<cmath>

#include<string>

#include<queue>

#include<algorithm>

#include<stack>

#include<cstring>

#include<vector>

#include<list>

#include<bitset>

#include<set>

#include<map>

using namespace std;

#define LL long long

#define pi (4*atan(1.0))

#define eps 1e-8

#define bug(x)  cout<<“bug”<<x<<endl;

const int N=1e3+10,M=7e6+10,inf=1e9+10,MOD=10;

const LL INF=1e18+10;

 

int a[N];

map<int,LL>dp[N],ans;

map<int,LL>::iterator it;

int main()

{

    int n,T;

    scanf(“%d”,&T);

    while(T–)

    {

        scanf(“%d”,&n);

        ans.clear();

        for(int i=1;i<=n;i++)

            dp[i].clear();

        for(int i=1;i<=n;i++)

            scanf(“%d”,&a[i]);

        for(int i=1;i<=n;i++)

        {

            dp[i][a[i]]++;

            ans[a[i]]++;

            for(it=dp[i-1].begin();it!=dp[i-1].end();it++)

            {

                int x=it->first;

                LL z=it->second;

                int now=__gcd(x,a[i]);

                dp[i][now]+=z;

                ans[now]+=z;

            }

        }

        LL sum=1LL*n*(n+1)/2;

        int q;

        scanf(“%d”,&q);

        while(q–)

        {

            int x;

            scanf(“%d”,&x);

            printf(“%lld\n”,sum-ans[x]);

        }

    }

    return 0;

}

1010

QAQ

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K
(Java/Other)

Total Submission(s) : 1082   Accepted Submission(s) : 223

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

概念操作:将数 n 变为 f(n) =
floor(sqrt(n))。即对三个数开平方后,再向下取整。
如对 二 实行壹遍操作,开平方再向下取整, 1.41421356二….. = 1 , 即变为了 1。
于今付出二个数 n,假若能在 伍 次操作内把 n 变为
1,则输出操作次数;固但是超越7次输出”QAQ”。
多少范围:
1<= n <= 10^100

Input

多组输入,每行输入一个数 n。

Output

每组数据输出要略微次操作,可能输出”QAQ”

Sample Input

233

233333333333333333333333333333333333333333333333333333333

Sample Output

3

QAQ

 

解题报告:签到题,大数

代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include<string.h>
using namespace std;

int main()
{
char str[1000005];
 long long n;
 while(cin>>str)
 {  
    double ant=0;
    
  int len=strlen(str);
  if(len>10)
  cout<<“QAQ”<<endl;
  else
  {
  for(int i=0;i<len;i++)
  {
  ant=ant*10+str[i]-‘0’;
 }
 int flag=0;
 while(ant!=1)
 {
  ant= floor(sqrt(ant));
  flag++;
 }
 if(flag>5)
 cout<<“QAQ”<<endl;
 else
 cout<<flag<<endl;
 }
 }
 
    return 0;
}

1、实现了笔者合计的匡正

在此以前线总指挥部觉着国外多少有个别好,港澳台多少先进,多少年的强调,大家连年会发觉里尤其谦虚地认为,我们跟人家的分裂大着吧。其实不然,走进了东方之珠地区,你也足以见到马路施工的杂乱,面包店的师傅在卖面包,价格并不高。楼宇中度跟Cordova和义路周围的建造差1截,以及有个别狭小的店面影射出港人生活地区的矜持。体味辽宁的小,市政坛真的不抵大6八个省份的办公区大。同理可得,与好玩的事和设想差别非常大。这有个别激发了自身的自豪感,用全新的见解比较客观的待遇事物。

二、给自个儿书本难以给的见识

 旅游你能够亲自体会一个地域的知识,不一样的风俗习惯文化条件,给您差异等的感动。在泰国自笔者上了六月公主号,接触到人妖;在克赖斯特彻奇笔者进了葡京赌场。在香岛本人驾驭香港人何以的偏重八字的。那个分裂的经验,让自家初步思虑,对与错,局地与总体,利益与道义的尽头到底在哪里?在大陆不合法的赌在海牙却是3个小岛的税收首要源于。人妖那种风俗文化怎么平素绵延?那一个题材直接冲击着自家的沉思,让作者心想。

叁、旅游蒙受的动静挑衅你的惯性思维

 那几个意况是那般的,小编跟相公在罗兹的时候,有贰遍中午多少人出门走走,发现澳币没了,本能拿出人民币,结果人民币没用。后来大家在银行职员联合会机上取了钱。然则那个情景让小编想了二个平素都尚未想的题材,人民币会有没用的时候。它让自家恍然认识到我们平日的惯性思维是何其的要紧。许多事务本来一直不跑出思想,其实是思想信赖已经非常的惨重。

4、还原你或多或少事物的面目

有段日子媒体直接电视发表,说旅游出去国民素质的标题,文明的标题。大抵描绘出中中原人民共和国人没素质,就好像一夜暴发致富的劣绅给人的回想。其实,出去壹趟笔者也替公民喊冤一下,比如那次在三个饭馆吃饭,旅游公司一个跟三个往餐厅涌,当然大都以华夏人。餐厅不小而是显明消化这么多人依然不寻常。吃的又是自助餐,于是饭菜一上来,立马餐盘见了低,还有很多人在排队,在冷清的餐盘前等。整个用餐秩序很倒霉,人实在太多了。这样的配套设施其实根本没跟上那样浩荡的队5,那年让大家饿着肚子给您怎么讲文明礼貌?在强调文明的时候是还是不是也要本身反省下,是要钱依旧要秩序,要扩充旅游量势须要付出代价,扩大设备,空喊文明其实也没怎么用,文明当然是要条件的。

   
旅游的体验很多的。给你不等同视角与胆识,教你考虑,也给您多多的学问。这个唯有经历了的人才能亲身体会,所以有空照旧多走走。所以住户说出了出游长了见识是很有道理的。