UVA - 138 Street Numbers

来源:互联网 发布:php取cookie取出失败 编辑:程序博客网 时间:2024/06/12 01:31

题目大意: 实际就是给你两个数m、n,使得m、n之间的数之和与1~m之间的数之和相等(不包括m)。

即:1+2+...+m-1 == (m+1)+...+n; 因此我们可以套用求和公式,两边移项化简得:2*pow(m,2) = n*(n+1)。

因此我们可以得到:n = sqrt(2*m*m)。枚举 m 的值,从而判断所得到的 n 值是否为整数,若为整数则说明两边的值实际相等。得到输出满足条件的最小的十组m、n,注意格式“%10d”。


#include <cstdio>#include <cmath>int main() {int cnt = 0;for (long long m = 6; cnt < 10; m++) {long long n = sqrt(2 * m * m);if (n * (n + 1) == 2 * m * m) {printf("%10lld%10lld\n", m, n);cnt++;}}return 0;}


0 0
原创粉丝点击