在讀取蘿蔔那一行的資料用 scanf()
然後要用 getchar() 把緩衝區的 "換行字元\n" 讀出但不理它
最後用 gets() 把每天吃的蘿蔔存成字串
只要此字串的開頭是 "結束字元\0" 就直接輸出體重
getchar() 是避免 gets() 讀到還在緩衝區的 \n 就直接結束,所以很重要,記得加
#include <iostream>
#include <string>
using namespace std;
int t,x,y,z,w,n,m,toxic=0,length;
string in;
inline int Eat(int radish)
{
switch(radish)
{
case 0:
return 0;
case 1:
return x;
case 2:
return y;
case 3:
return 0-z;
case 4:
toxic+=n;
return 0-w;
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin>>t;
for(int radish,i=0;t--;i=0,toxic=0)
{
cin>>x>>y>>z>>w>>n>>m;
cin.ignore();
getline(cin,in,'\n');
length=in.length();
while(i<length)
{
radish=in[i]-'0';
if(m<=0) break;
m-=toxic;
if(m<=0) break;
m+=Eat(radish);
if(m<=0) break;
i+=2;
}
if(m<=0) cout<<"bye~Rabbit"<<'\n';
else cout<<m<<'g'<<'\n';
}
return 0;
}
//(0.1s, 328KB)
在讀取蘿蔔那一行的資料用 scanf()
然後要用 getchar() 把緩衝區的 "換行字元\n" 讀出但不理它
最後用 gets() 把每天吃的蘿蔔存成字串
只要此字串的開頭是 "結束字元\0" 就直接輸出體重
getchar() 是避免 gets() 讀到還在緩衝區的 \n 就直接結束,所以很重要,記得加
#include
#include
using namespace std;
int t,x,y,z,w,n,m,toxic=0,length;
string in;
inline int Eat(int radish)
{
switch(radish)
{
case 0:
return 0;
case 1:
return x;
case 2:
return y;
case 3:
return 0-z;
case 4:
toxic+=n;
return 0-w;
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin>>t;
for(int radish,i=0;t--;i=0,toxic=0)
{
cin>>x>>y>>z>>w>>n>>m;
cin.ignore();
getline(cin,in,'\n');
length=in.length();
while(i<length)
{
radish=in[i]-'0';
if(m<=0) break;
m-=toxic;
if(m<=0) break;
m+=Eat(radish);
if(m<=0) break;
i+=2;
}
if(m<=0) cout<<"bye~Rabbit"<<'\n';
else cout<<m<<'g'<<'\n';
}
return 0;
}
//(0.1s, 328KB)
人家在說C
你給C++的代碼是怎樣...?