1. 程式人生 > >codeforce440C-Maximum splitting-規律題

codeforce440C-Maximum splitting-規律題

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-規律題