codeforce440C-Maximum splitting-規律題
阿新 • • 發佈:2018-05-12
long maximum algorithm 獲得 ret can pac tor ans
題意:問一個數最多可以變成幾個合數的和;
思路:
時刻提醒自己再看到題目的時候的所作所為,該找規律找規律,想什麽ksm,質數判斷開根號。
除了1、2、3、5、7、11外,其余的數都可以通過4,6,9獲得,所以只要用x對4取余,結果為1或3,ans都要減1;
(1、3-->9 ; 2-->6 )
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <vector> #include<map> #include <set> #include <queue> #include <list> #include <iterator> #include <cmath> using namespace std; typedef long long ll; int n,k; ll x; int main(){ scanf("%d", &n); for(int i=1; i<=n; i++) { scanf("%lld", &x);int ans = x/4; int tmp = x%4; if(x==1||x==2||x==3||x==5||x==7||x==11) { puts("-1"); continue; } if(tmp==3||tmp==1)ans--; printf("%d\n",ans); } return 0; }
codeforce440C-Maximum splitting-規律題