Codeforce 9c Hexadecimal's Numbers

来源:互联网 发布:plsql查看数据库表 编辑:程序博客网 时间:2024/05/29 14:02

题目大意:输入一个n,计算1~n内有多少个只由1和0组成的数。
想法题,由于只查找由0和1组成的数,而0和1组成的数都有一个相对应的二进制的数。 例: (1)=1 (10)=2 (11)=3
(100)=4 (110)=6 (1100101)=101
每个数所对应的二进制的值就是,就是十进制下该数是第几个符合条件的数。然后比较一下就好了。

#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;int a[3005]={0};int main(){    int n,x;    for(x=1;x<3000;x++){        int y=x,z=1;        while(y){            a[x]+=z*(y%2);            y/=2;            z*=10;        }    }    scanf("%d",&n);    int i;    for(i=1;i<3000;i++){        if(a[i]>n)break;    }    printf("%d\n",i-1);    return 0;}