Kai’blog

主博客 | 势利纷华,近之而不染者洁,不近者亦洁,君子不立危墙之下。

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;
}
posted @ 2023-10-11 10:45  Kai-G  阅读(6)  评论(0编辑  收藏  举报
Copyright © 2019-2020 拱垲. All rights reserved.