题目链接:http://codeforces.com/contest/1038/problem/B
题意是输入一个n,从1-n中分两组,使得两组的数总和的gcd大于2。
思路就是暴力,显然n等于1和2的时候肯定是不行的,当n大于3的时候,1到n-1的和是等于n * (n - 1) / 2的,而另一组n的和是n,这两者的gcd肯定是大于1的数,所以我们就直接输出就好了..
AC代码:
代码语言:javascript复制#include <bits/stdc .h>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
if(n == 1 || n == 2){
puts("No");
return 0;
}
puts("Yes");
printf("1 %dn",n);
printf("%d ",n - 1);
for(int i=1;i<n;i ){
printf("%d ",i);
}
// printf("%dn",n);
puts("");
return 0;
}