首页 > 其他分享 >洛谷P4956 [COCI2017-2018#6] Davor

洛谷P4956 [COCI2017-2018#6] Davor

时间:2022-11-22 17:46:50浏览次数:47  
标签:Davor 洛谷 COCI2017 样例 筹集 int 2018 52

[COCI2017-2018#6] Davor

题面翻译

在征服南极之后,Davor 开始了一项新的挑战。下一步是在西伯利亚、格林兰、挪威的北极圈远征。他将在 2018 年 12 月 31 日开始出发,在这之前需要一共筹集 n 元钱。他打算在每个星期一筹集 x 元,星期二筹集 x+k 元,……,星期日筹集 x+6k 元,并连续筹集 52 个星期。其中 x,k 为正整数,并且满足 1 ≤ ​ x ≤ ​100。

现在请你帮忙计算 x,k 为多少时,能刚好筹集 n 元。

如果有多个答案,输出 x 尽可能大,k 尽可能小的。注意 k 必须大于 0。

题目描述

After successfully conquering the South Pole, Davor is preparing for new challenges. Next up is the Arctic expedition to Siberia, Greenland and Norway. He begins his travels on 31 December 2018, and needs to collect ​N kunas (Croatian currency) by then. In order to do this, he has decided to put away ​X (​X ≤ 100) kunas every Monday to his travel fund, ​X + K kunas every Tuesday, ​X + 2* ​K every Wednesday, and so on until Sunday, when he will put away ​X + 6* ​K kunas. This way, he will collect money for 52 weeks, starting with 1 January 2018 (Monday) until 30 December 2018 (Sunday).

If we know the amount of money ​N​, output the values ​X and ​K so that it is possible to collect the ​exact money amount in the given timespan. The solution will always exist, and if there are multiple, output the one with the greatest ​X ​ and smallest ​K ​.

输入格式

The first line of input contains the integer ​N​ (1456 ≤ ​N​ ≤ 145600), the number from the task.

输出格式

The first line of output must contain the value of ​X (​0 < ​X ​≤ 100 ​)​, and the second the value of
K (K ​> 0 ​)​.

样例 #1

样例输入 #1

1456

样例输出 #1

1
1

样例 #2

样例输入 #2

6188

样例输出 #2

14
1

样例 #3

样例输入 #3

40404

样例输出 #3

99
4

提交程序

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        //获取k的可能值最大值
        int num = n / 52 / 21;

        int count = 0;
        int max = -1;
        int min = num;
        //获取k的最小x的最大
        for (int i = num;i > 0;i--) {
            count = (n / 52 - (21 * i)) / 7;
            if (count > max && count <= 100) {
                max = count;
                if (i < min) {
                    min = i;
                }
            }

        }
        System.out.println(max);
        System.out.println(min);

        //第二种方式
      /*  int x, k;
        int sum = n / 52;
        for (k = 1; ; k++) {
            for (x = 100; x > 0; x--) {
                if (7 * x + 21 * k == sum) {
                    System.out.println(x + "\n" + k);
                    return;
                }
            }
        }*/
    }
}

标签:Davor,洛谷,COCI2017,样例,筹集,int,2018,52
From: https://www.cnblogs.com/chongchongstyle/p/16915903.html

相关文章

  • 洛谷P1085 [NOIP2004 普及组] 不高兴的津津
    [NOIP2004普及组]不高兴的津津题目描述津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去......
  • 洛谷 P3336 [ZJOI2013]话旧
    洛谷P3336[ZJOI2013]话旧图是洛谷搞的做点简单的观察发现,每一次下降必须经过零点。对于每个点,有两种状态,从上面走过来,记为下降;从下面走过来,记为上升。\((0,0)\)我们......
  • 洛谷 P2501 [HAOI2006]数字序列
    洛谷P2501[HAOI2006]数字序列第一问实质是最大化不修改的数。假设\(i,j\)不修改(\(j<i\)),那么必须满足\(a_i-a_j\geqi-j\)。移项:\(a_i-i\geqa_j-j\)。设\(b_i=a......
  • 洛谷 P1403 约数研究
    洛谷P1403约数研究P1403约数研究-洛谷前置知识\(a\)能整除\(b\)用符号表示为\(b\mida\)\(1\simn\)中约数(即因子)含\(x\)的个数为\(\left\lfloor\df......
  • 洛谷-1347
    洛谷-1347思路此题解的思路再加上这篇blog的代码实现。注意:本体要求的不是一个拓扑排序就可以了,实际上是要求一条链的拓扑排序。Code#include<bits/stdc++.h>using......
  • 洛谷P1270 “访问”美术馆 树形dp
    题意https://www.luogu.com.cn/problem/P1270分析经典的树上背包,令\(dp[x][t]\)表示在\(x\)点剩余\(t\)秒的最多画数在\(x\)结点考虑分给左右结点的时间,故枚举分给左儿......
  • 洛谷:P1789 【Mc生存】插火把
        代码:#include<stdio.h>structhuobaye{intx;inty;};structstoneye{intx;inty;};intabs(intn){intflag;if(......
  • 洛谷P3917 异或序列
     题意:给出一个大小为n的序列a[n],求∑1≤i≤j≤n Ai​⨁Ai+1​⨁⋯⨁Aj的值​分析:根据异或的性质我们很容易想到一个O(n*n)的做法,即进行一个异或前缀和。......
  • 【洛谷 P4525】 【模板】自适应辛普森法 1
    自适应辛普森法,用于求定积分。原理是不断二分区间直到区间的积分和二次函数的积分拟合程度足够高,然后用二次函数的积分值来代替原积分值。#include<bits/stdc++.h>#def......
  • 洛谷P1706 全排列问题
    全排列问题题目描述P1706全排列问题-洛谷按照字典序输出自然数\(1\)到\(n\)所有不重复的排列,即\(n\)的全排列,要求所产生的任一数字序列中不允许出现重复的数字......