酷代码 AI
菜单

【NOIP2015 基础】骑士的金币(coin) 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 128MB,其他语言 256MB 难度:提高 分数:100 OI排行榜得分:18(0.1*分数+2*难度) 出题人: 描述 国王将金币作为奖励,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。 你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。 输入描述 一个整数(范围1到10000),表示天数。 输出描述 骑士获得的金币数。 用例输入 1 6 用例输出 1 14 提示 【来源】 noip2015普及组复赛第1题 来源 noip复赛 需要找规律的循环

以下是使用Python实现的代码: ```python # 获取输入的天数 days = int(input()) # 初始化金币总数为0 total_coins = 0 # 当前发放金币的天数,从1开始 current_days = 1 while days > 0: if days >= current_days: # 如果剩余天数大于等于当前发放金币的天数 total_coins += current_days * current_days days -= current_days else: # 如果剩余天数小于当前发放金币的天数 total_coins += days * current_days days = 0 # 增加当前发放金币的天数 current_days += 1 print(total_coins) ``` 以下是使用C++实现的代码: ```cpp #include <iostream> using namespace std; int main() { // 存储输入的天数 int days; cin >> days; // 初始化金币总数为0 int total_coins = 0; // 当前发放金币的天数,从1开始 int current_days = 1; while (days > 0) { if (days >= current_days) { // 如果剩余天数大于等于当前发放金币的天数 total_coins += current_days * current_days; days -= current_days; } else { // 如果剩余天数小于当前发放金币的天数 total_coins += days * current_days; days = 0; } // 增加当前发放金币的天数 current_days++; } cout << total_coins << endl; return 0; } ``` 代码解释 1. 输入处理:程序首先读取用户输入的天数。 2. 循环处理:使用一个`while`循环来模拟金币的发放过程。在每次循环中,判断当前剩余的天数是否大于等于当前发放金币的天数。 - 如果是,则将当前发放金币的天数乘以当前发放金币的天数累加到总金币数中,并从剩余天数中减去当前发放金币的天数。 - 如果不是,则将剩余天数乘以当前发放金币的天数累加到总金币数中,并将剩余天数置为0。 3. 更新当前天数:每次循环结束后,将当前发放金币的天数加1。 4. 输出结果:最后输出骑士获得的总金币数。 [2026-02-04 21:40:54 | AI问答 | 552点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多