#P1767. 小D的存钱罐
小D的存钱罐
题目背景
从 1 数到 10,普通人大概要 3 秒;从 1 数到 100,大概要 30 秒;从 1 数到 10 亿,不吃不喝也要几十年。
但电脑一秒钟大约能做 1 亿()次简单运算。所以,如果一个程序要循环 次:
| 的大小 | 循环次数 | 大约耗时(按每秒 次算) |
|---|---|---|
| 10 | 瞬间 | |
| 100 万 | 0.01 秒 | |
| 1 亿 | 1 秒 | |
| 10 亿 | 10 秒(很可能超时) | |
这只是粗略估算,实际速度会受 CPU、编译器和运算类型影响;但用来判断数量级已经足够。时间复杂度不关心具体秒数和常数系数,只关心 很大时运算次数怎么增长:
- :大约循环 次。 变成原来的 10 倍,时间也大约变成 10 倍。
- :不管 多大,都只做固定几次运算。 从 10 变成 10 亿,时间几乎不变。
这道题有 组询问。如果每组都循环 次,总运算量是 ;而用公式,每组只要一次乘法,总共只要 。
本题 最大 40000,单组循环看起来不多;但 最大 ,乘起来就是 次循环。
题目描述
小D制定了 个存钱计划。
每个计划的存钱规律都一样:
- 第 1 天,存入 1 元;
- 从第 2 天开始,每天都比前一天多存 2 元。
也就是说,每天存入的钱依次是:
1, 3, 5, 7, 9, ...
第 个计划一共存 天。请你分别算出每个计划结束后,存钱罐里一共有多少元。
输入格式
第一行一个正整数 ,表示存钱计划的数量。
接下来 行,每行一个正整数 ,表示第 个计划存钱的天数。
输出格式
输出 行,每行一个整数,表示对应计划结束后存钱罐里的总钱数。
数据范围
- 保证每个计划的答案不超过 。
样例
2
1
2
1
4
样例说明
- 样例 :两个计划分别存 1 天,2 天,答案是 1、4。
提示
最大为 ,输入输出行数较多,建议使用较快的输入输出方式,例如关闭 cin/cout 同步,或者使用 scanf/printf。
相关
在下列比赛中: