P1765
和那道题一样,这次用的getchar,结果对了可是洛谷评测WA了,换成scanf单个字符,结果还是WA了,换成直接getline读入整个字符串就对了。
可见读入单个字符的方式有可能出现各种小错,尤其是在洛谷...
得注意输入方式。
改了之后仍然没过,原来还会莫名其妙插入\r和\n。离谱,题里也没说啊,总之就当是学到了,以后题里没说也要考虑这个
WA-Code
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <map>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
int main()
{
char c;
int ans=0,p[30]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
while( scanf("%c",&c) != EOF )
{
if(c==' ')ans++;
else ans+=p[int(c-'a')];
}
cout<<ans<<endl;
return 0;
}
AC-Code
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <map>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
int main()
{
string s;
int ans=0,p[30]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
getline(cin,s);
for(int i=0;i<s.length();i++)
{
if(s[i]==' ')ans++;
else if(s[i]>='a'&&s[i]<='z')ans+=p[int(s[i]-'a')];
}
cout<<ans;
return 0;
}