题目内容
小 W 准备了一份数字列表,列表中的数依次排开,后一个数总比前一个数大一个固定的值。他希望所有数的和恰好等于某个整数 n 的平方。
具体来说,你需要找到一个整数序列 a1,a2,…,ak,满足对任意 1≤i<k 均有 ai+1−ai=d(d 为常数),并且 ∑i=1kai=n2。
现在给定整数 n,请输出任意一组满足要求的 a1,d,k。题目保证 n 满足 1≤n≤108。输出的三个整数 a1,d,k 的绝对值均不能超过 1010。
输入描述
输入只有一行,包含一个整数 n,表示目标和的平方底数。
输出描述
输出一行三个整数,用空格分隔,依次表示序列的第一个数 a1、相邻元素的固定差值 d 以及序列的长度 k。若有多组解,输出任意一组均可。
样例1
输入
5
输出
1 2 5
说明
使用经典结论:前 k 个奇数的和等于 k2。
这里取 k=n=‘5‘,公差 d=‘2‘,首项 a1=‘1‘,序列为 1,3,5,7,9,其和为 1+3+5+7+9=25=52。
样例2
输入
1
输出
1 2 1
说明
当 n=‘1‘ 时,依然可以利用奇数和公式:取 a1=‘1‘, d=‘2‘, k=‘1‘。
序列仅有 1,和等于 1,即 12。
样例3
输入
10
输出
1 2 10
说明
同样利用奇数和公式:前 10 个奇数之和为 102=100。
取 a1=‘1‘, d=‘2‘, k=‘10‘,序列 1,3,…,19,和为 100。
样例4
输入
3
输出
9 0 1
说明
直接取 k=‘1‘,则 a1=n2=9,此时 d 可为任意值(此处取 0)。
序列只有 9,和等于 9,即 32。这也是一种平凡解。