Contest2668 - 2021ACM俱乐部后备营个人训练赛第10场

Contest2668 - 2021ACM俱乐部后备营个人训练赛第10场

呜呜呜,这可能就是提升题/普及题的魅力叭,除了三个水题(有两个是上一场的重复的题),俺就做出来一道,麻了,后期补题再接着补吧
在这里插入图片描述

问题 B: 计算器的改良

思路

细节怪,很多坑,一不小心你就是WA WA 怪。

代码

#include <bits/stdc++.h>

using namespace std;

int main()
{
    
    
    string s;
    char c;//定义一个暂存未知数
    cin>>s;//按字符串形式读入,也可以写成单字符,边读边处理
    int xishu=0,changshu=0,flag=1,num=0,differ=1;
    //flag表示正负号,differ表示等号左右,num表示暂存读入的数字
    for(int i=0;i<s.size();++i)
    {
    
    
        if(s[i]>='a'&&s[i]<='z')
        {
    
    
            c=s[i];//后面需要输出未知数
            xishu  += flag*num*differ;//计算系数
            if(xishu==0)//如果系数计算为0,则按1处理
            {
    
    
                xishu=1;
            }
            num=0;//暂存的数归零
        }
        else if(s[i]=='+')
        {
    
    
            changshu -= num*differ*flag;//计算常数
            num=0;
            flag=1;//遇'-'号,flag不变
        }
        else if(s[i]=='-')
        {
    
    
            changshu -= num*differ*flag;
            num=0;
            flag=-1;//遇'-'号,flag变为-1
        }
        else if(s[i]=='=')
        {
    
    
            changshu -= num*differ*flag;
            differ=-1;//遇'='号,differ变为-1,表示移项
            num=0;
            flag=1;
        }
        else
            num = num*10+s[i]-'0';/*读入数字时
            进行字符和数字的转换成十进制*/
    }
    changshu += num*flag;/*防止最后一个数字被漏掉
    如4+3x=8,中等号右边的8*/
    printf("%c=%.3f",c,(changshu*1.0)/(xishu*1.0));
    /*精确到
    三位小数,用printf更加方便。由于前面的changshu是'-=',
    即(sishu)x=(changshu)的这种形式,
    所以x=(changshu*1.0)/(xishu*1.0)*/
    return 0;
}

问题 I: 移动石子(水题)

思路

别看题目复杂,它就是吓你的,其实就是个简单的判断奇偶性就行

代码

#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    
    
    int n;
    while(1)
    {
    
    
        cin>>n;
        if(n==0)
            break;
        if(n%2==0)
            cout<<"Kakashi"<<endl;
        else
            cout<<"Lost"<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_51344172/article/details/112898779