2018/12/7週五集訓隊第八次測試賽補題題解
阿新 • • 發佈:2018-12-11
A B
這個看之前的題解即可,第七次有詳細的解釋
C - Minimizing the String(貪心)
這個肯定不能把字典序都來一遍比較一下,這樣一定T。可以貪心的尋找第一個位置出現字元比後面大的情況即可
程式碼
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; string a; cin>>a; a+='0'; for(int i=0;i<a.size();i++) if(a[i]>a[i+1]) { a[i]='0'; break; } for(int i=0;i<a.size();i++) if(a[i]!='0') cout<<a[i]; }
D - Divisor Subtraction (數論)
先判斷是不是偶數,是偶數最小質因數就是2,那麼直接除以2即可。如果是奇數減去他的最小質因數之後肯定是一個偶數,然後繼續按照偶數判斷,如果這個數本身就是一個質數,那麼輸出1即可
注意要用long long!!!
程式碼
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long n,f=0; cin>>n; if(!(n&1)) cout<<n/2; else { for(long long i=2;i*i<=n;i++) if(n%i==0) { n-=i; f=1; break; } if(!f) cout<<1; else cout<<1+n/2; } }