- 阳子墨 的博客
8月集训 DAY5
- @ 2024-8-6 18:17:22
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;
}