360校园招聘

来源:互联网 发布:吉他伴奏器软件 编辑:程序博客网 时间:2024/04/29 01:21

题目:



题目很简单,就是统计在1-n之间所有只由0和1构成的整数,例如

1 10 11

100 101 110 111

1000 1001 1010 1011 1100 1101 1110 1111


代码:

#include<iostream>#include<vector>#include<map>#include<set>#include<sstream>#include<fstream>#include<cstring>#include<iomanip>#include<stack>#include<algorithm>using namespace std;int count_num(int num,set<int>&data){int count = 0;for (set<int>::iterator iter=data.begin(); iter!=data.end(); iter++){if (*iter<= num)count++;}return count;}int main(){ifstream fin("C:\\Users\\Dell\\Desktop\\data.txt");int num;set<int>data;data.insert(1);data.insert(10);data.insert(11);int now = 11;int count = 2;while (now<=pow(10,9)){int base = pow(10, count);int size = data.size();data.insert(base);set<int>::iterator iter = data.begin();while(size){data.insert(base+(*iter));iter++;size--;}count++;now = *(--data.end());}while (fin >> num){cout << count_num(num,data) << endl;}return 0;}
编码的过程中可能要用到将数字转化成字符串,下面是一些可行的办法:

#include<iostream>#include<vector>#include<map>#include<set>#include<sstream>#include<fstream>#include<cstring>#include<iomanip>#include<stack>#include<algorithm>using namespace std;//方法1int main(){ifstream fin("C:\\Users\\Dell\\Desktop\\data.txt");unsigned long long num;string str;stringstream mystream;while (fin>>num){mystream << num;mystream >> str;cout << str << endl;mystream.clear();}return 0;}//方法2int main(void){int number = 12345;char string[32];_itoa_s(number, string, 10);printf("integer = %d string = %s\n", number, string);return 0;}



0 0
原创粉丝点击