2017校招真题编程训练--幸运数 进制转换

时间:2025-03-09 18:18:50
  • #include <cstdio>
  • #include <cstring>
  • #include <cmath>
  • #include <iostream>
  • #include <algorithm>
  • #include <string>
  • #include <cstdlib>
  • #include <stack>
  • #include <map>
  • #include <set>
  • #include <queue>
  • using namespace std;
  • typedef long long ll;
  • const int maxn = 100000+10;
  • int sum[maxn];
  • int check1(int n)
  • {
  • int cnt=0;
  • while(n)
  • {
  • cnt+=n%10;
  • n/=10;
  • }
  • return cnt;
  • }
  • int check2(int n)
  • {
  • int cnt=0;
  • while(n)
  • {
  • cnt+=n%2;
  • n/=2;
  • }
  • return cnt;
  • }
  • void work()
  • {
  • sum[0]=0;
  • for(int i=1;i<=100000;i++)
  • {
  • sum[i]=sum[i-1];
  • if(check1(i)==check2(i))
  • sum[i]++;
  • }
  • }
  • int main(void)
  • {
  • int n;
  • work();
  • while(scanf("%d",&n)!=EOF)
  • printf("%d\n",sum[n]);
  • return 0;
  • }