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;
}