紫书--第三章习题(for循环)

A

https://vj.ti12z.cn/1cc6928b338f2eb8eb833dd0b1383cd0?v=1564454392

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

int main()
{
    int a,t,sum;
    char s[100];
    cin >> a;
    while(a--){
            sum=0;
        cin >> s;
        int len=strlen(s);
        if(s[0]=='O'){
            t=1;
            sum+=t;
        }
        else{
            t=0;
        }
        for(int i=1;i<len;i++){
            if(s[i]=='O'&&s[i-1]=='O'){
                t++;
                sum+=t;
            }
            else if(s[i]=='O'&&s[i-1]=='X'){
                t=1;
                sum+=t;
            }
            else if(s[i]=='X'){
                t=0;
            }
        }
        cout << sum << endl;
    }
    return 0;
}

B

https://vj.ti12z.cn/67439d42131b807256ad26321328160a?v=1564222856

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

int f(char c)
{
    if(c>='A'&&c<='Z')
    {
        return 1;
    }
    return 0;
}

int main()
{
    int a,g,t;
    double sum;
    char s[100];
    cin >> a;
    while(a--)
    {
        sum=0.000;
        cin >> s;
        int len=strlen(s);
        for(int i=0; i<len; i++)
        {
            if(f(s[i]))
            {
                t=0;
                g=0;
                for(int k=i+1; !f(s[k])&&k<len; k++)
                {
                    t=t*10+s[k]-'0';
                    g++;
                }
                if(t==0)
                {
                    t=1;
                }
                if(s[i]=='C')
                {
                    sum+=t*12.01;
                    t=0;
                }
                if(s[i]=='H')
                {
                    sum+=t*1.008;
                    t=0;
                }
                if(s[i]=='N')
                {
                    sum+=t*14.01;
                    t=0;
                }
                if(s[i]=='O')
                {
                    sum+=t*16.00;
                    t=0;
                }
                i=i+g;
            }
        }
        printf("%.3lf\n",sum);
    }
    return 0;
}

C

https://vj.ti12z.cn/896ed59b7a237fb98e750c3414895dce?v=1564418356

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

int main()
{
    int a,b,g;
    int n[11];
    cin >> a;
    while(a--){
        memset(n,0,sizeof(n));
        cin >> b;
        for(int i=1;i<=b;i++){
        int t=i;
        while(t!=0){
            g=t%10;
            t=t/10;
            n[g]++;
        }
       }
       for(int i=0;i<=9;i++){
        if(i==9){
            cout << n[i] << endl;
        }
        else{
            cout << n[i] << " ";
        }
       }
    }
    return 0;
}

D

https://vj.ti12z.cn/24c0d68c7b969c38f92f9f7f78cb2162?v=1564792815


//Full of love and hope for life

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <queue>
#define inf 0x3f3f3f3f
//https://paste.ubuntu.com/

using namespace std;

int main()
{
    int a,t;
    char s[100];
    cin >> a;
    while(a--){
            t=0;
        cin >> s;
        int len=strlen(s);
        for(int i=1;i<=len;i++){
            if(len%(i)==0){
                    t=1;
                for(int j=i;j<len;j++){
                    if(s[j]!=s[j%i]){
                        t=0;
                        break;
                    }
                }
                if(t==1){
                    cout << i << endl;
                    break;
                }
            }
        }
        if(a!=0){
            cout << endl;
        }
    }
    return 0;
}

E

https://vj.ti12z.cn/c142bcbb43aac35f2fe53a8b2d7dd133?v=1564794026


//Full of love and hope for life

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <queue>
#define inf 0x3f3f3f3f
//https://paste.ubuntu.com/

using namespace std;

int main()
{
    int t,g,h,k=0;
    char s[10][10],c,ss;
    while(gets(s[0])){
            if(s[0][0]=='Z'){
                break;
            }
            k++;
            t=0;
        for(int i=1;i<5;i++){
            gets(s[i]);
        }
        for(int i=0;i<5;i++){
            for(int j=0;j<5;j++){
                if(s[i][j]==' '){
                    t=1;
                    g=i;
                    h=j;
                    break;
                }
            }
            if(t==1){
                break;
            }
        }
        t=1;
     while(cin >> c){
        if(c=='0'){
            break;
        }
        if(c=='A'&&t==1){
            if(g-1<0){
                t=0;
                continue;
            }
            ss=s[g][h];
            s[g][h]=s[g-1][h];
            s[g-1][h]=ss;
            g=g-1;
        }
        if(c=='B'&&t==1){
            if(g+1>4){
                t=0;
                continue;
            }
              ss=s[g][h];
            s[g][h]=s[g+1][h];
            s[g+1][h]=ss;
            g=g+1;
        }
        if(c=='L'&&t==1){
            if(h-1<0){
                t=0;
                continue;
            }
              ss=s[g][h];
            s[g][h]=s[g][h-1];
            s[g][h-1]=ss;
            h=h-1;
        }
        if(c=='R'&&t==1){
            if(h+1>4){
                t=0;
                continue;
            }
              ss=s[g][h];
            s[g][h]=s[g][h+1];
            s[g][h+1]=ss;
            h=h+1;
        }
     }
     if(k!=1){
                cout << endl;
            }
    cout << "Puzzle #" << k << ":" << endl;
     if(t==1){
        for(int i=0;i<5;i++){
            for(int j=0;j<5;j++){
                    if(j==4){
                        if(i==g&&j==h){
                        cout << " " << endl;;
                    }
                    else{
                        cout << s[i][j] << endl;;
                    }
                    }
                    else{
                      if(i==g&&j==h){
                          cout << "  ";
                      }
                      else{
                          cout << s[i][j] << " ";
                      }
                    }
            }
        }
     }
     else{
        cout << "This puzzle has no final configuration." << endl;
     }
     getchar();
    }
    return 0;
}

F

https://vj.ti12z.cn/963433dd82c52cf702fde21457b672c9?v=1564788515


//Full of love and hope for life

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <queue>
#define inf 0x3f3f3f3f
//https://paste.ubuntu.com/

using namespace std;

int main()
{
    int a,b,k=0,g,h;
    char s[15][15];
    int n[15][15];
    while(cin >> a){
            if(a==0){
                break;
            }
            h=1;
            k++;
            scanf("%d\n",&b);
        for(int i=1;i<=a;i++){
            for(int j=1;j<=b;j++){
                cin >> s[i][j];
                if(s[i][j]!='*'&&(i-1==0||j-1==0||s[i-1][j]=='*'||s[i][j-1]=='*')){
                    n[i][j]=h;
                    h++;
                }
            }
        }
    if(k!=1){
        cout << endl;
    }
    cout << "puzzle #" << k << ":" << endl;
    cout << "Across" << endl;
    for(int i=1;i<=a;i++){
        for(int j=1;j<=b;){
         if(s[i][j]!='*'&&(s[i][j-1]=='*'||j==1)){
                if(n[i][j]>=10&&n[i][j]<100){
                        cout << " " << n[i][j] << ".";
                    }
                    else if(n[i][j]>=100){
                        cout << n[i][j] << ".";
                    }
                    else{
                        cout << "  " << n[i][j] << ".";
                    }
                for(g=j;g<=b;g++){
                    if(s[i][g]!='*'){
                        cout << s[i][g];
                    }
                    else{
                        break;
                    }
                }
                cout << endl;
                j=g;
            }
            else{
                j++;
            }
        }
    }
    cout << "Down" << endl;
    for(int i=1;i<=a;i++){
        for(int j=1;j<=b;j++){
            if(s[i][j]!='*'&&(s[i-1][j]=='*'||i==1)){
                    if(n[i][j]>=10&&n[i][j]<100){
                        cout << " " << n[i][j] << ".";
                    }
                    else if(n[i][j]>=100){
                        cout << n[i][j] << ".";
                    }
                    else{
                        cout << "  " << n[i][j] << ".";
                    }
                for(g=i;g<=a;g++){
                    if(s[g][j]!='*'){
                        cout << s[g][j];
                    }
                    else{
                        break;
                    }
                }
                cout << endl;
            }
        }
    }
    }
    return 0;
}

G

https://vj.ti12z.cn/56baee6c9c79e5bf9c60514e2b5d833e?v=1564663690


//Full of love and hope for life

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <queue>
#define inf 0x3f3f3f3f
//https://paste.ubuntu.com/

using namespace std;

int main()
{
    int a,b,c,A,G,T,C,sum;
    char s[100][1010],ss[1010];
    cin >> a;
    while(a--){
            sum=0;
        cin >> b >> c;
        for(int i=1;i<=b;i++){
            for(int j=1;j<=c;j++){
                cin >> s[i][j];
            }
        }
        for(int i=1;i<=c;i++){
            A=0;
            G=0;
            T=0;
            C=0;
            for(int j=1;j<=b;j++){
                if(s[j][i]=='A'){
                    A++;
                }
                if(s[j][i]=='G'){
                    G++;
                }
                if(s[j][i]=='T'){
                    T++;
                }
                if(s[j][i]=='C'){
                    C++;
                }
            }
            int t=max(max(A,T),max(G,C));
            if(t==A){
                ss[i]='A';
                sum+=b-A;
            }
            else if(t==C){
                ss[i]='C';
                sum+=b-C;
            }
             else if(t==G){
                ss[i]='G';
                sum+=b-G;
            }
            else if(t==T){
                ss[i]='T';
                sum+=b-T;
            }
        }

        for(int i=1;i<=c;i++){
            cout << ss[i];
        }
        cout << endl;
        cout << sum << endl;
    }
    return 0;
}

H

https://vj.ti12z.cn/249e6049be24dee57a1c3b28ebf8f12d?v=1564726616


//Full of love and hope for life

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <queue>
#define inf 0x3f3f3f3f
//https://paste.ubuntu.com/

using namespace std;

int main()
{
    int a,b;
    int n[100010],m[100010];
    while(cin >> a >> b){
        memset(n,0,sizeof(n));
        memset(m,0,sizeof(m));
        cout << a << "/" << b << " = " << a/b << ".";
        a=a%b;
        int k=1;
        while(!n[a]){
            n[a]=k;
            a*=10;
            m[k++]=a/b;
            a%=b;
        }
        for(int i=1;i<n[a];i++){
            cout << m[i];
        }
        cout << "(";
        int len=k-n[a];
        if(len>50){
            k=51;
        }
        for(int i=n[a];i<k;i++){
            cout << m[i];
        }
        if(len>50){
            cout << "...";
        }
        cout << ")" << endl;
        cout << "   " << len << " = " << "number of digits in repeating cycle" << endl;
        cout << endl;
    }
    return 0;
}

I

https://vj.ti12z.cn/249e6049be24dee57a1c3b28ebf8f12d?v=1564726616

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

int main()
{
    int k;
    char s[100010],ss[100010];
    while(cin >> s){
        cin >> ss;
        k=0;
        int len1=strlen(s);
        int len2=strlen(ss);
        for(int i=0;i<len2;i++){
               if(ss[i]==s[k]){
                    k++;
            }
        }
        if(k==len1){
            cout << "Yes" << endl;
        }
        else{
            cout << "No" << endl;
        }
    }
    return 0;
}

J

https://vj.ti12z.cn/436e1fb0d6086ed4c0adc179ef077e8c?v=1564709974

 


//Full of love and hope for life

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <queue>
#define inf 0x3f3f3f3f
//https://paste.ubuntu.com/

using namespace std;

int main()
{
    int a,b,k,t=0,g;
    int n[10000];
    while(cin >> a >> b){
        if(a==b){
            t++;
        }
        k=0;
        g=0;
        memset(n,0,sizeof(n));
        n[a]++;
        n[b]++;
        for(int i=1; i<=5; i++){
            cin >> a >> b;
            if(a==b){
                t++;
            }
            n[a]++;
            n[b]++;
        }
        if(t==0){
            for(int i=1; i<=10000; i++){
                if(n[i]==4){
                    k++;
                }
            }
            if(k==3){
                cout << "POSSIBLE" << endl;
            }
            else{
                cout << "IMPOSSIBLE" << endl;
            }
        }
        else if(t==2){
            for(int i=1; i<=10000; i++){
                if(n[i]==4){
                    k++;
                }
                if(n[i]==8){
                    g++;
                }
            }
            if(g==1&&k==1){
                cout << "POSSIBLE" << endl;
            }
            else{
                cout << "IMPOSSIBLE" << endl;
            }
        }
        else if(t==6){
            if(n[a]==12){
                cout << "POSSIBLE" << endl;
            }
            else{
                cout << "IMPOSSIBLE" << endl;
            }
        }
        else{
            cout << "IMPOSSIBLE" << endl;
        }
        t=0;
    }
    return 0;
}

 

K

https://vj.ti12z.cn/ed235629f3a7d3d553766f5258632816?v=1564800824


//Full of love and hope for life

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <queue>
#define inf 0x3f3f3f3f
//https://paste.ubuntu.com/

using namespace std;

int main()
{
    int i,j,min1,min2;
    char s[200];
    char ss[200];
    while(cin >> s){
        cin >> ss;
        int len1=strlen(s);
        int len2=strlen(ss);
        for(i=0; i<len1; i++){
            for(j=0; j<len2; j++){
                if(s[i+j]+ss[j]-'0'-'0'==4)
                    break;
                if(i+j==len1)
                    break;
            }
            if(j==len2||i+j==len1)
                break;
        }
        min1=i+len2;
        if(min1<len1){
            min1=len1;
        }
        for(i=0; i<len2; i++){
            for(j=0; j<len1; j++){
                if(ss[i+j]+s[j]-'0'-'0'==4)
                    break;
                if(i+j==len2)
                    break;
            }
            if(j==len1||i+j==len2)
                break;
        }
        min2=i+len1;
        if(min2<len2){
            min2=len2;
        }
        cout << min(min1,min2) << endl;
        memset(s,0,sizeof(s));
        memset(ss,0,sizeof(ss));
    }
    return 0;
}

L

https://vj.ti12z.cn/50c38dd8d5eb02f909692535dcb8ac01?v=1564554133


//Full of love and hope for life

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <queue>
#define inf 0x3f3f3f3f
//https://paste.ubuntu.com/

using namespace std;

int main()
{
    double n[15][35];
    memset(n,0,sizeof(n));
    char s[100];
    double a;
    int b;
    double g,h;//g记录前面的最大值,h记录后面的次方数
    for(int i=0;i<10;i++){//i是前面的数量,j是后面的
        for(int j=1;j<=30;j++){//i是前面的数量,j是后面的
            g=1-pow(2,-1-i);
            h=pow(2,j)-1;//多少次方
            n[i][j]=h*log10(2)+log10(g);
        }
    }
    int flag;
    double x;
    while(1){
        flag=0;
        cin >> s;
        int len=strlen(s);
        for(int i=0;i<len;i++){
            if(s[i]=='e'){
                s[i]=' ';
                break;
            }
        }
        sscanf(s,"%lf %d",&a,&b);
        if(a==0&&b==0){
            break;
        }
        x=b+log10(a);
        for(int i=0;i<10;i++){
            for(int j=1;j<=30;j++){
                if(fabs(n[i][j]-x)<1e-5){
                    cout << i << " " << j << endl;
                    flag=1;
                    break;
                }
            }
            if(flag==1){
                break;
            }
        }
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZ --瑞 hopeACMer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值