主要思路:没有按照大家的思维去找规律,而是直接利用字符串匹配,把int转string,让程序去判断,匹配到1,计数器就加1。
PS:这是一个恶毒的算法...时间复杂度太高。n=f(n),目前算的最大n是200001。
尝试算50000000,等了半天第一个数的f(n)都没出来...
//Powered by LZR! 字符串匹配找1 #include<iostream> #include<string> using namespace std; int coute(int n) { string str; int i,j,clock=0; for(i=1;i<=n;i++) { char t[32]; sprintf(t,"%d",i); str=t; for(j=0;j<str.length();j++) { if(str.find_first_of("1",j)==j) { clock++; } } } return clock; } void main() { int n; cout<<"请输入一个正整数:"<<endl; cin>>n; cout<<"字符1,出现的次数为:"<<coute(n)<<endl; }
时间: 2024-10-11 10:05:01