POJ 2853 Sequence Sum Possibilities
题意:某些正整数可由几个连续数相加而成,且方法可能有多种,如3 = 1 + 2, 9 = 4 + 5 = 2 + 3 + 4
给出任意小于2^31的正整数,问有多少种方法。
思路:其实就是关于公差为1的等差数列的问题。
由 num = (a1 + an) * n / 2 , an = a1 + n - 1可以得到
令 k = 2 * num / n
则a1 = (k - n + 1) / 2, an = (k + n - 1)
所以枚举sqrt(2 * num) 的所有因子,每一组因子中小的为n,大的为k
求出对应的a1,an,若满足大于0,小于num,是整数这些条件,ans++
2 #include <cstring>
3 using namespace std;
4
5 //const int M = 100000;
6 const int N = 200000;
7 //int pr[M], pri;
8 /*
9 void prime()
10 {
11 pr[0] = 2; pr[1] = 3; pr[2] = 5; pr[3] = 7;
12 pri = 4;
13 for(int i=11; i<=N; i++)
14 {
15 int flag = 0;
16 for(int i=0; i<pri; i++)
17 {
18 if(i%pr[pri]==0)
19 {
20 flag = 1;
21 break;
22 }
23 }
24 if(flag == 0)
25 pr[pri++] = i;
26 }
27 }
28 */
29 int main()
30 {
31 int n, no;
32 long long num;
33 //prime();
34 cin >> n;
35 for(int i=1; i<=n; i++)
36 {
37 cin >> no >> num;
38 if(num==0 || num==1 || num==2)
39 cout << no << " 0" << endl;
40 else
41 {
42 int ans = 0;
43 num *= 2;
44 for(int j=2; j*j<=num; j++)
45 {
46 if(num%j==0)
47 {
48 long long k = num / j;
49 long long a1 = (k + 1 - j) / 2, an = (k + j - 1) / 2;
50 if(a1>0 && an <num && a1*2 == (k+1-j) && an*2==(k+j-1))
51 ans++;
52 //cout << j << " " << a1 << " " << an << endl;
53 }
54 }
55 cout << no << " " << ans << endl;
56 }
57 }
58
59 return 0;
60 }
View Code
------------------------
这题浪费了很多时间,还是用笔演算清楚才去敲比较好。。。
转载于:https://www.cnblogs.com/byluoluo/p/3454048.html
POJ 2853 Sequence Sum Possibilities相关推荐
- POJ 2479 Maximum sum
http://poj.org/problem?id=2479 题意: 给出一个整数串,求连续子串1和连续子串2,不相交并且串1加串2的和最大. 思路: 其实就是求最大连续和,题意要求就是求两段最大连续 ...
- POJ - 3581 Sequence(后缀数组)
题目链接:点击查看 题目大意:给出一个数列,保证第一个数一定大于其余的所有数,现在需要让我们将其分为连续的三段,每一段独立反转后保证字典序最小,题目要求输出反转后字典序最小的数列 题目分析:因为第一个 ...
- POJ 3581 Sequence ——后缀数组 最小表示法
[题目分析] 一见到题目,就有了一个显而易见obviously的想法.只需要每次找到倒过来最小的那一个字符串翻转就可以了. 然而事情并不是这样的,比如说505023这样一个字符串,如果翻转了成为320 ...
- HOJ题目分类//放这儿没事刷刷学算法!嘻嘻!
各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...
- sicily题目分类
sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
- [sicily]部分题目分类
sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
- Sicily 题目分类
依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...
- 编程题目分类(剪辑)
1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...
- 中大SICILY分类
原文出处:http://linguifan2010.blog.163.com/blog/static/1315127442010102131322482/ ********************** ...
最新文章
- Spring: DispacherServlet和ContextLoaderListener中的WebApplicationContext的关系
- java第10次作业 计科1501 张鹏
- String 堆内存和栈内存
- Vue学习(一)-邂逅Vuejs
- 解决ubuntu Gvim 菜单乱码
- 前端打包利器webpack里utils.cssLoaders的工作原理调试
- 新电子书:解决生产中Java应用程序错误的完整指南
- 条件测试 linux,Linux的条件测试
- 基于 Flink 构建 CEP 引擎的挑战和实践
- [excel]解决Excel和txt转换出现的“问题
- 微信小程序--云开发静态网站h5跳小程序
- “铭赛科技”科创板IPO:“机器人王国梦”价值几何?
- 如何截取音频片段并制作成手机铃声
- python苹果下载软件助手哪个好_Mac App Store有哪些值得推荐的软件?为什么?
- 电脑文件不小心删除了怎么恢复 ? 删除的文件如何恢复文件?
- 地图热区随屏幕大小改变
- 如何申请专利费用减免?
- win10系统cf连接服务器失败,win10系统cf连接服务器失败的解决方法
- setpagecache.php_一个PHP页面缓存类 修改后可作Emlog缓存插件
- vue+css漂亮的定制日历