解题思路:
min, max = min+n-1, M = (min + max)*n/2 = (2*min+n-1)*n/2
注意事项:
参考代码:
import java.util.Scanner; public class C1258 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { F(sc.nextInt()); } sc.close(); } private static void F(int M){ //min, max = min+n-1, M = (min + max)*n/2 = (2*min+n-1)*n/2 int min = 0; int k = (int)Math.sqrt(2*M); for(int n = k; n >= 2; n--){ if((2*M) % n == 0){ min = 2*M/n - (n-1); if(min % 2 == 0){ System.out.printf("%d %d\n", min/2, min/2+n-1); } } } System.out.println(); } }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:747 |
C语言训练-求具有abcd=(ab+cd)2性质的四位数 (C语言代码)浏览:621 |
C语言训练-求素数问题 (C语言代码)浏览:773 |
C语言训练-排序问题<1> (C语言代码)浏览:636 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:909 |
简单的for循环浏览:1498 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:769 |
简单的a+b (C语言代码)浏览:661 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:895 |
剪刀石头布 (C++代码)浏览:1811 |