PAT A1005
这道题可能做过很多遍了,LeetCode和乙级好像都出现过,所以很快做出来了,有点尴尬就是忘了怎么string 和int互换……
ans = to_string(sum);//Int转string
a = ans[i] - '0';//char转Int
帖答案:
#include<iostream>
#include<string>
#include<math.h>
#include<vector>
using namespace std;
int main()
{
string num[10] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
string ss;//输入为string格式
cin >> ss;
int l = ss.size();
int i = 0, a, sum = 0;
string ans;
for (i = 0; i<l; i++)
{
a = ss[i] - '0';
sum += a;
}
if (sum<10)
{
cout << num[sum];
system("PAUSE");
return 0;
}
ans = to_string(sum);
//cout << "ans="<<ans << endl;
l = ans.size();
//cout << "l=" << l << endl;
for (i = 0; i<l-1; i++)
{
//cout << "ans[i]=" << ans[i] << endl;
a = ans[i] - '0';
cout << num[a] << " ";
}
cout << num[ans[l-1]-'0'];
system("PAUSE");
return 0;
}
PAT A1006
也是非常简单的一道题 没什么知识点……
很基础……没什么难的……
用空格分开的string读取直接用cin即可 保存空格用getline( )
贴答案:
#include<iostream>
#include<string>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;//总人数
string id;
string t1,t2;//进入和离开的时间
string opman,clman;//记录最早开门和最晚关门的人
//string max,min;
//int mmin,max;//记录最小时间
int hms1[3]={24,59,59};//时分秒
int hms2[3]={0,0,0};
int T1[3]={0};
int T2[3]={0};
int i;
while(n--)
{
cin>>id>>t1>>t2;
for( i=0;i<3;i++)
{
T1[i]=(t1[i*2]-'0')*10+(t1[i*2+1]-'0');
T2[i]=(t2[i*2]-'0')*10+(t2[i*2+1]-'0');
}
int flag1=1,flag2=1;
for(i=0;i<3;i++)
{
if(T1[i]<=hms1[i]&&flag1)
{
hms1[1]=T1[1];
hms1[2]=T1[2];
hms1[0]=T1[0];
opman=id;
}
else flag1=0;
if(T2[i]>=hms2[i]&&flag2)
{
hms2[0]=T2[0];
hms2[1]=T2[1];
hms2[2]=T2[2];
clman=id;
}
else flag2=0;
}
}
cout<<opman<<" "<<clman;
return 0;
}