#include<iostream>using namespace std;int main(){int a,count = 0;cin >> a;for(int i = 1;i < 1000000000;i *= 10){if(a/i != 0)count++;}cout << count << endl;return 0;}/*算法入门第二章课后习题2-1位数*/
#include<iostream>using namespace std;int main(){int a,b,c;for(int i = 100; i < 1000; i++){a = i/100;b = (i/10)%10;c = i%10;if(i == a*a*a + b*b*b + c*c*c)cout << i << endl;}return 0;}/*算法设计入门第二章2-2水仙花数*/
#include <iostream>using namespace std;int main(){int a,b,c;cin >> a >> b >> c;bool mark = false;for(int i=10;i<=100;i++){if(i == (70*a + 21*b + 15*c) % 105){cout << i << endl;mark = true;break;}}if(false == mark)cout << "No answer" << endl;return 0;}/*韩信点兵(2-3)------中国剩余定理 ①使用前提:其一是除数都为素数,其二所求数需小于最小公倍数 x % 3 = a; x % 5 = b; x % 7 = c; 中国剩余定理有公式:x = (70*a + 21*b +15*c) % n; 70是5和7的倍数,用3除余1; 21是3和7的倍数,用5除余1; 15是3和5的倍数,用7除余1; n为3,5,7的最小公倍数,为105;*/
#include<iostream>using namespace std;int main(){int n,p;cin >> n;p = n; // 记录倒序第几行for(int i = 0; i<n; i++,p--){int j = i;while(j--){ cout << " ";} // 填充左边空白处 int q = 1 + (p-1)*2;while(q--){cout << "#";} // 输出#三角一行 cout << endl; //换行输出}return 0;}/* 输出类似倒三角图形(2-4) ######### ####### ##### ### #*/
#include<iostream>#include<vector>#include<iterator>using namespace std;int main(){vector <int> remember;int n;cin >> n;for(int i = 0;i < n;i++){int x;cin >> x;remember.push_back(x);}int m;cin >> m;int count = 0;for(vector<int>::iterator beg = remember.begin(); beg != remember.end();beg++){if(*beg <= m)count++;}cout << count << endl;return 0;}/*算法设计第二章2-5,输入数据比较大小再输出统计结果 对vector的使用还不是很熟,看完书再回头看看这题!!!*/
#include <iostream>using namespace std;int main(){int n;cin >> n;double sum = 0;double count = 1.0;for(int i = 1;i <= n;i++){sum += 1/count;count++;}cout.setf(ios_base::fixed,ios_base.floatfield);cout.precision(3);cout << sum <<endl;return 0;}/*注意浮点的计算的表示输出问题(2-6) 记住这两句作用 cout.setf(ios_base::fixed,ios_base.floatfield); cout.precision(3);*/
#include <iostream>using namespace std;int main(){double sum = 0;double p = 1.0;double i = 1.0;int j = 1;for(; p >=0.0000001;i +=2,j++){p = 1.0/i;if(j % 2 != 0){sum +=p;}elsesum -=p;}cout.setf(ios_base::fixed,ios_base::floatfield);cout.precision(6);cout << sum*4 << endl;return 0;}/*近似计算PI(2-7)*/
#include <iostream>using namespace std;int main(){double a,b,m,n;cin >> a >> b;if(a > b){m = a;n = b;}else{m = b;n = a;}double sum = 0;for(double i = n; i<=m; i++){sum += 1.0/(i*i);}cout.setf(ios_base::fixed,ios_base::floatfield);cout.precision(5);cout << sum << endl;return 0;}/*子序列求和(2-8)*/
#include<iostream>using namespace std;int main(){double a,b;int c;cin >> a >> b >> c;cout.setf(ios_base::fixed,ios_base::floatfield);cout.precision(c);cout << a/b << endl;return 0;}/*分数化小数,输出指定位数的结果(2-9)*/
#include <iostream>using namespace std;inline bool haveSame(const int t,const int (&c)[10]){for(int i = 0; i < 10; i++){if(t == c[i]){return true;}}return false;}int main(){int a,b,c,d,e,f,g,h,i;int compare [10];for(int j = 123; j<333; j++){for(int p = 0; p<10; p++){ compare[p] = 0;}a = j/100;compare[1] = a;b = j%100/10;if(haveSame(b,compare)){continue;}compare[2] = b;c = j%10;if(haveSame(c,compare)){continue;}compare[3] = c;int q = j*2;d = q/100;if(haveSame(d,compare)){continue;}compare[4] = d;e = q%100/10;if(haveSame(e,compare)){continue;}compare[5] = e;f = q%10;if(haveSame(f,compare)){continue;}compare[6] = f;int s = j*3;g = s/100;if(haveSame(g,compare)){continue;}compare[7] = g;h = s%100/10;if(haveSame(h,compare)){continue;}compare[8] = h;i = s%10;if(haveSame(i,compare)){continue;}compare[9] = i;cout << j << ":" << q << ":" << s << endl;}return 0;}/*排列输出所有解(2-10)*/