#include<bits/stdc++.h>usingnamespace std;intmain(){int n, t;cin >> n >> t;int res =0;for(int i =1; i <= n; i ++){int x = i;bool ok =true;while(x){if(x %10== t){ok =false;}x /=10;}res += ok;} cout << res << endl;return0;}
2:阿姆斯特朗数 (打表)
#include<bits/stdc++.h>usingnamespace std;int a[15]={153,370,371,407,1634,8208,9474,54748,92727,93084,548834,1741725,4210818,9800817,9926315};intmain(){for(int i =0; i <15; i ++) cout << a[i]<< endl;return0;}
3:蚱蜢
#include<bits/stdc++.h>usingnamespace std;intmain(){string s;cin >> s;int n = s.size();s =" "+ s;int ma =0;int last =0;for(int i =1; i < s.size(); i ++){if(s[i]=='A'|| s[i]=='E'|| s[i]=='I'|| s[i]=='O'|| s[i]=='U'|| s[i]=='Y'){// 能跳 ma =max(ma, i - last);last = i;}}ma =max(ma,(int)s.size()- last);cout << ma << endl;return0;}
4:二分查找1
#include<bits/stdc++.h>usingnamespace std;constint N =1e6+10;int a[N];intmain(){int n, x;cin >> n >> x;for(int i =1; i <= n; i ++){cin >> a[i];}sort(a +1, a +1+ n);cout << a[upper_bound(a +1, a +1+ n, x)- a -1];return0;}
5:砍伐树木 (二分答案,模板二)
#include<bits/stdc++.h>usingnamespace std;int n, m;#defineintlonglongconstint N =1e6+10;int a[N];boolcheck(int mid){int res =0;for(int i =1; i <= n; i ++){if(a[i]>= mid){res += a[i]- mid;}}return res >= m;}signedmain(){cin >> n >> m;for(int i =1; i <= n; i ++){cin >> a[i];}int l =0, r =1e9;while(l < r){int mid = l + r +1>>1;if(check(mid)) l = mid;else r = mid -1;} cout << l << endl;return0;}
信息素养复赛模拟 2
1:排队接水(贪心)
#include<bits/stdc++.h>usingnamespace std;constint N =210;
pair<int,int> a[N];signedmain(){int n;cin >> n;for(int i =1; i <= n; i ++){cin >> a[i].first;a[i].second = i;}sort(a +1, a +1+ n);double ans =0;int res =0;for(int i =1; i <= n ;i ++){res += a[i].first;ans += res;cout << a[i].second <<' ';}cout << endl;cout << fixed <<setprecision(2)<< ans / n << endl;return0;}
2:整数区间(贪心)
#include<bits/stdc++.h>usingnamespace std;constint N =1e4+10;
pair<int,int> a[N];boolcmp(pair<int,int> x, pair<int,int> y){return x.second < y.second;}signedmain(){int n;cin >> n;for(int i =1; i <= n; i ++) cin >> a[i].first >> a[i].second;sort(a +1, a +1+ n, cmp);int ans =0;int last =-1;for(int i =1; i <= n; i ++){if(a[i].first > last){last = a[i].second;ans ++;}}cout << ans << endl;return0;}
3:乘积为n的素数(唯一分解定理)
#include<bits/stdc++.h>usingnamespace std;signedmain(){int n;cin >> n;vector<int> v;for(int i =2; i * i <= n; i ++){while(n % i ==0){v.push_back(i);n /= i;}}if(n >1){v.push_back(n);}sort(v.begin(), v.end());cout << v.size()<< endl;for(auto x : v){cout << x <<' ';}cout << endl;return0;}
4:最小公倍数(欧几里得算法)
#include<bits/stdc++.h>usingnamespace std;intmain(){int a, b;cin >> a >> b;cout << a * b /__gcd(a, b)<< endl;return0;}
5:幂取模(快速幂)
#include<bits/stdc++.h>usingnamespace std;#defineintlonglongintqmi(int a,int b,int mod){int res =1;while(b){if(b &1) res = res * a % mod; a = a * a % mod;b >>=1;}return res;}signedmain(){int a, b, c;cin >> a >> b >> c;cout <<qmi(a, b, c)<< endl;return0;}