bc第六场Goffi and Squary Partition
来源:互联网 发布:校园网络暴力案例 编辑:程序博客网 时间:2024/06/05 14:57
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=52935
题意:要求你找k个不同的正整数满足以下条件:1、这k个数之和为n,2、k-1个数之和是某个正整数的平方
思路:我先用sqrt(n)找到满足条件的最大的正整数m,然后从m到1循环一遍,找是否存在满足条件的数,如果存在就break,输出yes,否则输出no
在寻找满足条件的数的时候,我的做法是找到前k-2个数,这个k-2个数要求最小,也就是从1开始,一直到k-2,如果其中包含那个正整数n-m*m,如果含有,那么就到k-1,这样前k-2个数就是最小的和,如果第k-1个数需要改变,那么只能变小,以维持正好等于m*m,然后第k-1个数就是n-(前k-2个数以及n-m*m的和)根据第k-1个数是否满足条件,第k-1应该满足:1、大于第k-2个数,2、如果这个数和n-m*m相等,那么这个数就得减小,同时第k-2个数中就需要增大,所以这个减小增大的范围内不能含有n-m*m
代码:
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<iostream>
using namespace std;
int n, k;
bool judge(int m)
{
int sh = n - m*m;
if (sh == 0) return false;
int sum = 0;
int cnt = 0;
for (int i = 1; i <=k-2; i++)
{
cnt++;
if (cnt == sh) cnt++;
sum += cnt;
}
if (sum >= m*m) return false;
int sh1 = m*m - sum ;
if (sh1 <= cnt) return false;
if (sh == cnt+1 || sh == cnt + 2)
{
if (sh1 == sh) return false;
}
return true;
}
int main()
{
while (scanf("%d%d", &n, &k)!=EOF)
{
int m=sqrt(n);
while(m)
{
if(judge(m))
{
printf("YES\n");
break;
}
else
m--;
}
if(m==0)
printf("NO\n");
}
return 0;
}
- bc第六场Goffi and Squary Partition
- 【CUGBACM15级BC第六场 B】hdu 4982 Goffi and Squary Partition
- Goffi and Squary Partition-HDU-4982 BC.6.B
- HDU 4982/BC 6B Goffi and Squary Partition
- HDU4982 Goffi and Squary Partition
- bc第六场Goffi and GCD
- 【杂题】 HDOJ 4982 Goffi and Squary Partition
- hdu 4982 Goffi and Squary Partition(构造)
- hdu 4982 Goffi and Squary Partition
- HDOJ 4982 Goffi and Squary Partition
- hdu 4982 Goffi and Squary Partition (枚举)
- HDU 4982 Goffi and Squary Partition
- HDU 4982 Goffi and Squary Partition(推理)
- hdu 4982 Goffi and Squary Partition(BestCoder Round #6)
- hdu 4982 Goffi and Squary Partition (想法题)
- HDU 4982 Goffi and Squary Partition(枚举)
- HDU-4982-Goffi and Squary Partition【贪心】【构造】
- hdu 4982 Goffi and Squary Partition(思路)
- HDU 4982 Goffi and Squary Partition(枚举)
- STM32两个hex文件合并问题
- 关于SOC中的总线AXI/AHB/APB
- Maximal Square
- 2. Browser 对象 - Window 对象(2)
- bc第六场Goffi and Squary Partition
- hdu 5317 RGCDQ
- 排序算法--希尔排序
- AS3和JS通信并调用qq空间分享界面
- SQL server 中 SQL 单引号转义问题
- Android Parcelable 嵌套readParcelable
- ViewPager 中设置图片大小不起作用
- vlc编译网址链接
- mybatis-generator生成相对应的po、dao以及mapper