问题出在样例的22,它的个位十位和都是2,但我的代码跑出来却是少这一个(应该少的是十位)。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool k(int n)
{
int ans=0;
int t;
while(n>0)//如果不够砍,就停止
{
t=n%10;//取最后一位
if(t==2)//判断
{
ans++;
}
n/=10;//砍掉
}
return ans;//返回i中2的总个数
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int a,b,cnt=0;
cin>>a>>b;
for(int i=a;i<=b;i++)
{
cnt+=k(i);//每个数中2的个数加起来
}
cout<<cnt;//输出总和
return 0;
}
写到这时我才改对。不过想问问各位大佬为什么不能用bool?
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int k(int n)
{
int ans=0;
int t;
while(n>0)//如果不够砍,就停止
{
t=n%10;//取最后一位
if(t==2)//判断
{
ans++;
}
n/=10;//砍掉
}
return ans;//返回i中2的总个数
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int a,b,cnt=0;
cin>>a>>b;
for(int i=a;i<=b;i++)
{
cnt+=k(i);//每个数中2的个数加起来
}
cout<<cnt;//输出总和
return 0;
}
这样就对了