//3181
#include <iostream>
using namespace std;
int main(){
int ans ;
int book[10];for(int i=0;i<10;i++){
book[i]=2021;}for(ans =1;; ans++){//cout<<ans<<endl;
int temp = ans;
int check[10];for(int j=0;j<10;j++)check[j]=0;while(temp!=0){
check[temp%10]++;
temp/=10;}
int flog =0;for(int i=0;i<10;i++){if(check[i]>book[i]){
flog=1;break;}}if(flog==0){for(int i=0;i<10;i++){
book[i]-=check[i];}}else{break;}}
cout<<ans-1<<endl;return0;}
C题
//错的//2376
#include <iostream>
using namespace std;
int main(){
int ans =20+20+20*19+20*19;//横竖斜
int b =0;//单点左斜边for(int i=20;i>=3;i--){
b+=i;}//单点右斜边
int c =0;for(int i=19;i>=3;i--){
c+=i;}
ans+=(b+c)*4;
cout<<ans<<endl;return0;}
D题
//2430
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;const int maxn=1e4+5;
ll ys[maxn];
int k=0;voidinit(ll n){for(ll i=1;i*i<=n;i++){if(n%i==0){if(i==n/i){
ys[k++]=i;}else{
ys[k++]=i;
ys[k++]=n/i;}}}}
int main(){
ll a ;//=2021041820210418;while(cin>>a){init(a);sort(ys,ys+k);
int ans=0;for(int i=0;i<k;i++){for(int j=0;j<k;j++){if(ys[i]*ys[j]>a){break;}for(int p=0;p<k;p++){if(ys[i]*ys[j]*ys[p]==a){
cout<<ys[i]<<" "<<ys[j]<<" "<<ys[p]<<endl;
ans++;}}}}
cout<<ans<<endl;}return0;}
E题
//10266837
#include <iostream>
#include <cmath>
using namespace std;const int maxn =1e3*3;const int INF=0x7ffffff;
int mp[maxn][maxn];
int gcd(int a,int b){return a%b==0?b:gcd(b,a%b);}
int lcm(int a,int b){return a/gcd(a,b)*b;}voidinit(){for(int i=1;i<=2021;i++){for(int j=i+1;j<=2021;j++){if(j-i<=21){
mp[i][j]=mp[j][i]=lcm(i,j);}else{
mp[i][j]=mp[j][i]=INF;}}}}
int Dijestl(){
int ans =INF;for(int k=1;k<=2021;k++){for(int i=1;i<=2021;i++){for(int j=1;j<=2021;j++){
mp[i][j]=min(mp[i][k]+mp[k][j],mp[i][j]);}}}return ans;}
int main(){init();//建图
cout<<Dijestl()<<endl;//最短路return0;}
F题
#include <iostream>
using namespace std;
#define ll long long
int main(){
ll ms;
cin>>ms;
ms/=1000;//秒
ll s =ms%60;
ms/=60;//分
ll m=ms%60;
ms/=60;//时
ll h=ms%24;if(h<10){
cout<<0<<h;}else{
cout<<h;}
cout<<":";if(m<10){
cout<<0<<m;}else{
cout<<m;}
cout<<":";if(s<10){
cout<<0<<s;}else{
cout<<s;}
cout<<endl;return0;}
G题
#include <iostream>
#include <map>
using namespace std;
int n;const int maxn =105;
int a[105];
#define ll long long
map<ll,int>mp;
ll ans;voiddfs(int m,int t,ll v){if(m>n-1){return;}
v=abs(v);if(mp[v]==0){
ans++;
mp[v]=1;}for(int i=t+1;i<n;i++){dfs(m+1,i,v+a[i]);dfs(m+1,i,v-a[i]);}}
int main(){while(cin>>n){
ans=0;
mp.clear();for(int i=0;i<n;i++){
cin>>a[i];}for(int i=0;i<n;i++)dfs(0,i,a[i]);
cout<<ans<<endl;}}
H题
//水数据
#include <iostream>
using namespace std;const int maxn=1e4+5;
#define ll long long
ll a[maxn][maxn];
ll b[maxn*maxn];voidinit(){
a[1][1]=1;for(int i=1;i<maxn;i++){//打印1000行for(int j=1;j<=i;j++){if(j==1||j==i){
a[i][j]=1;}else{
a[i][j]=a[i-1][j-1]+a[i-1][j];}}}
ll k=1;for(int i=1;i<maxn;i++){for(int j=1;j<=i;j++){
b[k++]=a[i][j];}}//cout<<k<<endl;}
int main(){init();
int N;while(cin>>N){// cout<<b[N]<<endl;
ll ans=1;for(int i=1;i<maxn;i++){if(b[i]==N){break;}
ans++;}
cout<<ans<<endl;}return0;}
I题
//水数据
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;const int maxn=1e5+5;
int a[maxn];voidinit(int n){for(int i=1;i<=n;i++){
a[i]=i;}}
bool cmp1(int a,int b){return a<b;}
bool cmp2(int a,int b){return a>b;}
int main(){
int n,m;while(cin>>n>>m){init(n);
int p,q;while(m--){scanf("%d %d",&p,&q);if(p){//升序sort(a+q,a+n+1,cmp1);}else{//降序sort(a+1,a+q+1,cmp2);}}for(int i=1;i<n;i++){
cout<<a[i]<<" ";}cout<<a[n]<<endl;}return0;}
J题
//错的
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;while(cin>>s){
int left=0,right=0;for(int i=0;i<s.length();i++){if(s[i]=='('){
left++;}else{
right++;}}
int ans=abs(right-left);if(ans==0)
cout<<0<<endl;else
cout<<2*ans+1<<endl;}return0;}*/