8月集训 DAY5

数字统计

😕错误原因

忘记初始化ans了(以后要注意)

🚀️思路

将从l到r的数,数位分离,找到有多少个2,ans加上2的个数.

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	freopen("tj.in","r",stdin);
	freopen("tj.out","w",stdout);
	int l,r,ans=0,bf;
	cin>>l>>r;
	for(int i=l;i<=r;i++)
	{
		bf=i;
		while(bf)
		{
			if(bf%10==2) ans++;
			bf=bf/10;
		}
	} 
	cout<<ans;
}

乒乓球

😕思路错误的原因

误以为11分制和21分制是两方加起来达到11或21 并且没有考虑0:0

思路

分别模拟一下 11分制和21分制 如果是'W'w++,否则l++. 如果他们中有人大于11或21,并且分差大于2. 输出w,l 最后在输出没满足条件的最后一次

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	freopen("pingpong.in","r",stdin);
	freopen("pingpong.out","w",stdout);
	int w=0,l=0,flag=0;
	string s,s2;
	while(cin>>s)
	{
		flag=0; 
		s2+=s;
		for(int i=0;i<s.size();i++) 
		{
			if(s[i]=='E') 
			{
				flag=1;
				break;
			}
		}
		if(flag) break;
	}
	for(int i=0;i<s2.size();i++)
	{
		
		if(s2[i]=='E') break;
		if(s2[i]=='W') w++;
		else l++;
		if((l>=11||w>=11)&&abs(w-l)>=2)
		{
			cout<<w<<':'<<l<<endl;
			w=0;
			l=0;
		}
	}
	if(l!=0||w!=0) cout<<w<<':'<<l<<endl;
	else cout<<"0:0"<<endl;
	w=0;
	l=0;
	cout<<endl;
	for(int i=0;i<s2.size();i++)
	{
		if(s2[i]=='E') break;
		if(s2[i]=='W') w++;
		else l++;
		if((l>=21||w>=21)&&abs(w-l)>=2)
		{
			cout<<w<<':'<<l<<endl;
			w=0;
			l=0;
		}
		
	}
	if(l!=0||w!=0) cout<<w<<':'<<l<<endl;
	else cout<<"0:0"<<endl;
}