• Codeup刷题笔记-简单模拟


    1、A+B

    题目描述
    给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
    现在请计算A+B的结果,并以正常形式输出。

    输入
    输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。

    输出
    请计算A+B的结果,并以正常形式输出,每组数据占一行。

    -234,567,890 123,456,789
    1,234 2,345,678
    
    -111111101
    2346912
    
    • 1
    • 2
    • 3
    • 4
    • 5
    #include
    using namespace std;
    #include
    int main()
    {
        char s1[20],s2[20];
        int len1,len2;
        int a,b;
        while(scanf("%s%s",s1,s2)!=EOF)
        {
            a=b=0;
            len1=strlen(s1);
            len2=strlen(s2);
            for(int i=0;i<len1;i++)
            {
                if(s1[i]>='0'&&s1[i]<='9')
                {
                    a=a*10+s1[i]-'0';//字符数组转数字
                }
            }
            if(s1[0]=='-')//负数取反
            {
                a=-a;
            }
            for(int i=0;i<len2;i++)
            {
                if(s2[i]>='0'&&s2[i]<='9')
                {
                    b=b*10+s2[i]-'0';
                }
            }
            if(s2[0]=='-')
            {
                b=-b;
            }
            cout<<a+b<<endl;
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    2、特殊乘法

    题目描述
    写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 14 +15 +24 +25 +34+35
    输入
    两个小于1000000000的数

    输出
    输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。

    24 65
    42 66666
    3 67
    
    66
    180
    39
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    #include
    using namespace std;
    #include
    int main()
    {
        char s1[20],s2[20];
        int len1,len2;
        long sum;
        while(scanf("%s%s",s1,s2)!=EOF)
        {
            sum=0;
            len1=strlen(s1);
            len2=strlen(s2);
            for(int i=0;i<len1;i++)
            {
                for(int j=0;j<len2;j++)
                {
                    if(isdigit(s1[i])&&isdigit(s2[j]))//判断数字
                    {
                        sum+=(s1[i]-'0')*(s2[j]-'0');
                    }
                }
            }
            //一正一负的情况结果是负数
            bool flag= (s1[0]=='-'&&s2[0]!='-')||(s1[0]!='-'&&s2[0]=='-') ? true:false;
            if(flag)
            {
                cout<<-sum<<endl;
            }else
            {
                cout<<sum<<endl;
            }
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    3、比较奇偶数个数

    题目描述
    第一行输入一个数,为n,第二行输入n个数,这n个数中,如果偶数比奇数多,输出NO,否则输出YES。

    输入

    输入有多组数据。
    每组输入n,然后输入n个整数(1<=n<=1000)。

    输出

    如果偶数比奇数多,输出NO,否则输出YES。

    1
    67 
    7
    0 69 24 78 58 62 64 
    
    YES
    NO
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    #include
    using namespace std;
    
    bool isOdd(int num)
    {
        return num%2==0 ? true:false;
    }
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            int num,os=0,js=0;
            for(int i=0;i<n;i++)
            {
                scanf("%d",&num);
                if(isOdd(num))
                {
                    os++;
                }else
                {
                    js++;
                }
            }
            if(js>os)
            {
                cout<<"YES"<<endl;
            }else
            {
                cout<<"NO"<<endl;
            }
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    4、部分A+B

    题目描述
    正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。

    现给定A、DA、B、DB,请编写程序计算PA + PB。

    输入
    输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。
    输出
    在一行中输出PA + PB的值。

    3862767 6 13530293 3
    3862767 1 13530293 8
    
    399
    0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    #include
    #include
    using namespace std;
     
    int count(string s,int x)
    {
        int cnt=0;
        for(char c:s)
        {
            if(c-'0'==x)cnt++;
        }
        return cnt;
    }
    int toSum(int x,int num)
    {
        int sum=0;
        for(int i=0;i<num;i++)
        {
            sum=sum*10+x;
        }
        return sum;
    }
    int main()
    {
        string sa,sb;
        int a,b;
        while(cin>>sa>>a>>sb>>b)
        {
            int cntA=count(sa,a);
            int cntB=count(sb,b);
            int pa=toSum(a,cntA);
            int pb=toSum(b,cntB);
            cout<<pa+pb<<endl;
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    5、查找学生信息

    题目描述
    输入N个学生的信息,然后进行查询。

    输入
    输入的第一行为N,即学生的个数(N<=1000)

    接下来的N行包括N个学生的信息,信息格式如下:
    01 李江 男 21
    02 刘唐 男 23
    03 张军 男 19
    04 王娜 女 19
    然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:
    02
    03
    01
    04
    输出
    输出M行,每行包括一个对应于查询的学生的信息。

    如果没有对应的学生信息,则输出“No Answer!”

    #include
    using namespace std;
    #include
    struct Student
    {
        string id;
        string name;
        string sex;
        int age;
        
    };
    int main()
    {
        struct Student stu[1010];
        int n;
        string id;
        string name;
        string sex;
        int age;
        int m;
        
        while(scanf("%d",&n)!=EOF)//实测有多组测试数据,题目未说
        {
            for(int i=0;i<n;i++)
            {
            cin>>id>>name>>sex>>age;
            stu[i].id=id;
            stu[i].name=name;
            stu[i].sex=sex;
            stu[i].age=age;
            }
        
            cin>>m;
            string s;
            
        for(int i=0;i<m;i++)
        {
            bool flag=false;
            cin>>s;
            int j;
            for(j=0;j<n;j++)
            {
                if(s==stu[j].id)
                {
                    flag=true;
                    break;
                }
            }
            if(flag)
            {
                cout<<stu[j].id<<" "<<stu[j].name<<" "<<stu[j].sex<<" "<<stu[j].age<<endl;
            }else
            {
                cout<<"No Answer!"<<endl;
            }
        }
     }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
  • 相关阅读:
    maven或者gradle打完jar,jekins启动提示找不到问题
    Chrome DOM断点之实现源码追溯
    2022.11.20 学习周报
    【Python编程】三、Python变量与运算符
    常见漏洞修复方案
    第四章:Vue中的ajax
    Shell 输入/输出重定向
    自己实现 SpringMVC 底层机制 系列之-实现任务阶段 5- 完成 Spring 容器对象的自动装配 -@Autowried
    北大肖臻老师《区块链技术与应用》系列课程学习笔记[18]以太坊-挖矿算法
    携手北大医学部、哈佛BCH顶尖平台,飞鹤全面启动脑发育战略
  • 原文地址:https://blog.csdn.net/qq_57987156/article/details/125838103