杭州回來以後,一直在準備考試周的各個結課考試,這周才所有考完。以後感情上出了點狀況,如今一切都安定下來,都挺好,因此我又得開始搞CF了。c++
二十天左右沒練,明顯的水平降低了。好比這道題。算法
題目是這樣的,輸入一個n,每次都減去當前n的最小素因子,輸出一共能減多少次。spa
原先我還覺得還須要素數篩法曬出全部素數,每次一個一個試,看了別人的題解以後才發現不是這樣的。若是n是偶數,顯然n/2就是答案;若是n是奇數,那它的最小素因子確定也是奇數,那麼一減以後呢?我就找不出接下來最小素因子的算法描述了。其實我忘了,奇數減奇數以後,確定是個偶數,而偶數的最小素因子是2。若是能立刻想到這個,就解決了。code
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n; cin>>n; if (n%2==0) {cout<<n/2<<endl;return 0;} for (ll i=2;i*i<=n;i++) { if (n%i==0) { n-=i; cout<<1+n/2<<endl; return 0; } } cout<<1<<endl; return 0; }