在讀取蘿蔔那一行的資料用 scanf()
然後要用 getchar() 把緩衝區的 "換行字元\n" 讀出但不理它
最後用 gets() 把每天吃的蘿蔔存成字串
只要此字串的開頭是 "結束字元\0" 就直接輸出體重
getchar() 是避免 gets() 讀到還在緩衝區的 \n 就直接結束,所以很重要,記得加
在讀取蘿蔔那一行的資料用 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++的代碼是怎樣...?