博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【洛谷习题】连续自然数和
阅读量:5298 次
发布时间:2019-06-14

本文共 875 字,大约阅读时间需要 2 分钟。

题目链接:


 

水啊!话说最近老是在做水题。。。

相当于求一段公差为1的等差数列使得其和为M,利用公式可以很轻松地推出a(1-a)+b(b+1)=2M,也就是说,找到一组(a,b)满足上述式子,其实就是答案。

既然这么水,为什么要整理这道题呢?

注意注意!防水防爆防溢出!可恶的溢出!WA了我三个点!

额,还是说一下怎么找a和b吧,我们枚举a,就可以求出b(b+1),接下来只需要验证这个数是否可以表示成一个整数乘以该整数加1的形式。我是取其平方根t,看看他等不等于t(t+1)。这样做貌似是对的,,,暂时没反例。

总之一句话!谨防溢出!

1 #include 
2 #include
3 4 typedef long long ll; 5 6 inline int judge(ll x) { 7 int t = (int)sqrt(x); 8 if (t * (t + 1LL) == x) return t; 9 else return 0;10 }11 12 int main() {13 int m, first = 1;14 scanf("%d", &m);15 for (int i = 1; i < m; ++i) {16 ll j = 2 * m - i * (1LL - i);17 int k = judge(j);18 if (k) {19 if (first) first = 0;20 else putchar('\n');21 printf("%d %d", i, k);22 }23 }24 return 0;25 }
AC代码

 

转载于:https://www.cnblogs.com/Mr94Kevin/p/9771377.html

你可能感兴趣的文章
Nginx的知识分享,技术分享
查看>>
git 分布式版本控制了解
查看>>
java获取方法的参数名称列表
查看>>
ASP.NET 会话状态【一】
查看>>
day 38 进程 与 子进程 (开启进程 + 进程中的数据隔离 + 守护进程 + 进程中的其他方法 )...
查看>>
dubbo注册中心介绍
查看>>
在netty3.x中存在两种线程:boss线程和worker线程。
查看>>
1489 蜥蜴和地下室
查看>>
【HTML/XML 10】XML文档中的Schema文件
查看>>
C语言中整型运算取Ceiling问题
查看>>
分治——最近点对
查看>>
Spring中jdbc Template使用
查看>>
什么是你的核心竞争力?
查看>>
Network Monitoring in Software-Defined Networking :A Review(综述)
查看>>
libtiff4.04
查看>>
CentOS 7 下使用 Firewall
查看>>
软件设计原则与模式
查看>>
[微信小程序] 认识微信小程序及开发环境搭建
查看>>
json模块,pickle模块,shelve模块
查看>>
django 分页出现 UnorderedObjectListWarning 错误
查看>>