zoukankan      html  css  js  c++  java
  • 第一次作业

    /*
    67.取石头 (15分)
    C时间限制:3000 毫秒 |  C内存限制:3000 Kb
    题目内容:
    有一堆石子,A,B两人
    轮流从中取出石子,每次取出的石子数目只能为1,3,7或8,最后一枚石子谁取到就是输方。
    A,B两人都足够聪明,不会做出错误的判断。现给出一定数目的石子,A先取石子,计算A最终是输是赢,赢用1表示,
    输用0表示.

    输入描述

    第一行为一个整数n(0< n <=100),表示玩n局,接下来n行每行有一个整数,表示对应的局提供的石子数(不大于
    10000),


    输出描述

    编程输出A对应的n局是赢是输,赢输出1,输输出0.


    输入样例

    3
    1
    3
    10


    输出样例

    0
    0
    1
    */
    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    using namespace std;
    const int maxn = 1001;
    int f[maxn];
    int game(int x){
        f[0]=1;f[1]=0;f[2]=1;f[3]=0;f[4]=1;f[5]=0;f[6]=1;f[7]=0;f[8]=1;
        for(int i=9;i<=x;i++)
            f[i]=!(f[x-1]&&f[i-3]&&f[i-7]&&f[i-8]);
        return f[x];
    }
    int main(){
        int n;
        cin>>n;
        memset(f,0,sizeof(f));
        for(int i=1;i<=n;i++){
            int x;
            scanf("%d",&x);
            cout<<game(x)<<endl;
        }
        return 0;
    }

    /*499.最大公约数 (10分)
    C时间限制:3000 毫秒 |  C内存限制:3000 Kb
    题目内容:

    欧几里得原理:
    用GCD(A,B)表示两个正整数A和B的最大公约数(GCD是最大公约数的英文Greatest Common Divisor的简写)。
    不妨认为A>B,那么GCD(A,B) =GCD(A-B,B)。 也就是把其中较大的一个数变为两数之差后,最大公约数不会变。
    例如 GCD(36,14)= GCD (36-14, 14)=GCD(22,14)
    现要求利用欧几里得原理,设计一个程序,求两个整数的最大公约数。

    输入描述

    输入两个整数A,B,  中间用空格间隔。
    输出描述
    输出A和B的最大公约数
    输入样例
    14 8
    输出样例
    2
    */
    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int GCD(int a,int b){
        if(b==0) return a;
        if(a<b){
            int t;
            t=a;
            a=b;
            b=t;
        }
            GCD(a-b,b);
        
    }
    int main(){
        int a,b;
        cin>>a>>b;
        cout<<GCD(a,b)<<endl;
        return 0;
    }

    /*1497.传球问题 (20分)
    C时间限制:3000 毫秒 |  C内存限制:3000 Kb
    题目内容:

    现有四个人做传球游戏,要求接球后马上传给别人。由甲先传球,并作为第1次传球,求经过n次传球仍回到发球人甲手中的传球方式的种数。

    输入描述

    整数n,已知n<20


    输出描述

    传球方式数


    输入样例

    10


    输出样例

    14763*/
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    const int maxn = 20;
    int g[maxn],f[maxn];//f记录的是从甲传球再传回甲中途传球的次数,g记录的是从乙传球传回甲传球的次数
    int main(){
        int n;
        cin>>n;
        memset(g,0,sizeof(g));
        memset(f,0,sizeof(f));
        f[0] = 0,g[1] = 1,f[1]=0;//当n==1是,甲传给别人,无法传回自己,所以为0;
        for(int i=2;i<=n;i++){
            f[i] = 3*g[i-1];
            g[i] = 2*g[i-1] + f[i-1];
        }
        cout<<f[n]<<endl;
        return 0;
    }

  • 相关阅读:
    vs2005 enable your debug
    暑假的安排
    session
    我所看过的电影——不断更新中……
    symbian
    CUDA学习。。。visual assist 扩展
    MySQL密码修改
    fcitx in Fedora
    LDAP身份验证
    mysql自增auto_increment删除记录
  • 原文地址:https://www.cnblogs.com/lusiqi/p/11507189.html
Copyright © 2011-2022 走看看