#include<bits/stdc++.h> usingnamespace std; intmain(){ int a [100]; int n = 2019,len = 0; while(n>0){ a[len++] = --n % 26; n = n/26; } for(int i = len-1;i>=0;i--) printf("%c", a[i]+'A'); cout<< endl; return0; }
试题 C: 数列求值
答案:
解析:
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include<bits/stdc++.h> usingnamespace std;
intmain(){ int n = 20190324; int a, b ,c; a = b = c =1; for(int i =4;i<=n;i++){ int tmp = a + b + c; a = b,b = c, c = tmp%100000; } cout<< c%10000 <<endl; return0; }
boolget(int a, int b, int c){ while(a || b || c){ if(a%10==4 || a%10==2) return0; if(b%10==4 || b%10==2) return0; if(c%10==4 || c%10==2) return0; a/=10, b/=10, c/=10; } return1; } intmain(){ int n = 2019; int ans = n; for(int i =0;i<n;i++){ for(int j =i;j+i<n;j++){ int k = n - j - i; if( k >= j && get(i,j,k)) ans ++; } } cout << ans << endl; return0; }
boolget(int x){ while(x){ int t = x%10; if(t == 1 || t == 2 || t ==0 || t == 9) return1; x /=10; } return0; } intmain(){ int n, ans = 0;; cin>>n; for(int i = 1;i<=n;i++){ if(get(i)) ans += i; } cout<< ans <<endl; return0; }
intgcd(int a,int b){return !b?a:gcd(b,a%b);} intmain(){ cin >> n; int minv = INT_MAX; for(int i =0;i<n;i++) cin >> a[i]; sort(a, a + n); int x = a[1] - a[0]; for(int i =1;i<n-1;i++) x = gcd(a[i+1] -a[i], x); int res = 0; for(int i =0;i<n-1;i++) res += ((a[i+1]-a[i])/x-1); cout << res + n<<endl; return0; }
试题 I: 后缀表达式
解析:
排序,小的减,大的加
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include<bits/stdc++.h> usingnamespace std;
#define maxn 200005 #define ll long long int N, M, a[maxn]; intmain(){ cin >> N >> M; int n = N+M+1; for(int i = 0;i<n;i++) cin>> a[i]; sort(a, a+n); ll res = 0; int i = 0; while(M--) res -= a[i++]; while(i<n) res += a[i++]; cout<< res <<endl; return0; }