TB椰程 TypeBuddy 打字搭子

[COCI2017-2018#6] Davor

洛谷·深入浅出 · 代码 · cpp · 难度 3/5 · 共 531 字

解方程 7X+21K=N/52,取 X 最大 K 最小

  • 洛谷
  • 练习

正文

// 原题:https://oj.yecheng.tv/p/1392
// 题意:每周存 X + (X+K)+...+(X+6K),共 52 周,求 X(<=100)、K(>0) 使总额恰为 N,X 尽量大 K 尽量小。
// 思路:每周和 = 7X+21K,52 周共 52*(7X+21K)=N → X+3K = N/(52*7) = M。K 从 1 起取使 X=M-3K 落在 [1,100] 的第一个。
// 复杂度:O(100)。
// 易错点:先约去 7 得到 X+3K=M;K 最小对应 X 最大。
#include <iostream>
using namespace std;
int main(){
    int N;
    cin >> N;
    int M = (N / 52) / 7;
    for(int K = 1; ; K++){
        int X = M - 3 * K;
        if(X >= 1 && X <= 100){
            cout << X << endl << K << endl;
            return 0;
        }
    }
}

洛谷·深入浅出的其它内容

打字首页 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK