Codeforces Round #440 (Div. 2,)-数学&规律- Maximum splitting

来源:互联网 发布:mac 繁体转简体 编辑:程序博客网 时间:2024/05/17 17:39

http://codeforces.com/contest/872/problem/C
给定m个数。
问每个数最多由多少个合数相加而来。。
1.n%4==0  这个时候直接输出n/4即可。
2.n%4==2  这个时候还是直接输出n/4,因为n%4==2相当于(n-6)%4==0,而6也是合数。
3.n%4==1 || n%4==3  那么n自然是个奇数,这个时候我们找个最小的奇合数处理下就行(n-=9。然后在计算。

#include <bits/stdc++.h>using namespace std;int t,m;int main(){  scanf("%d",&t);     while(t--){          scanf("%d",&m);          int ans=0;          bool flag=false;          if(m%4==0||m%4==2){             ans=m/4;          }          else if(m%4==1||m%4==3){              m-=9;              ans=m/4+1;              if(m==0)flag=true;          }          if(m<4&&!flag){             puts("-1");          }          else             printf("%d\n",ans);          }    return 0;}
阅读全文
0 0