样例输入: 24 输出:7
输入:2024 输出: 150
思路:本题朴素方法的时间复杂度是O(n * log10(n))
,不超时。主要考察能否逐位取数,注意细节p=i,这样不会改变i,否则会导致循环错误。
#include <iostream>
using namespace std;
int main()
{
int n,ans=0;
cin>>n;
for(int i=1;i<n;i++)
{
int c=1,f=0;
///cout<<i<<endl;
int p=i;
while(p!=0)
{
int m=p%10;
m%=10;
if(m%2!=1&&c%2==1)
{
f=1;break;
}
if(m%2!=0&&c%2==0)
{
f=1; break;
}
p/=10;
c++;
}
if(f==0)
{
ans++;
}
}
printf("%d\n",ans);
return 0;
}