python
def f(n): rlt = 0 while n: rlt += n n //= 10 return rlt def g(n): rlt = 0 while n: rlt += n%2 n //= 2 return rlt n = int(input()) # n = 21 cnt = 0 for i in range(1, n+1): if f(i) == g(i): cnt += 1 print(cnt)C语言
#include <stdio.h> #include <stdlib.h> int f(int n) { int tmp = n; int rlt = 0; while(tmp) { rlt += tmp; tmp /= 10; } return rlt; } int decToBin(int n) { int tmp = n; int rlt = 0; int i = 1; while(tmp) { rlt += tmp%2*i; printf("%d:%d\n", i, rlt); i *= 10; tmp /= 2; } return rlt; } int g(int n) { int tmp = n; int rlt = 0; while(tmp) { rlt += tmp%2; tmp /= 2; } return rlt; } int main() { int n, i; scanf("%d", &n); int cnt = 0; for(i=1; i<=n; i++) { if(f(i) == g(i)) { cnt++; } } printf("%d\n", cnt); system("pause"); }