• POJ2000


    问题描述:

    国王用金币支付他忠诚的骑士。在他服役的第一天,骑士收到一枚金币。在接下来的两天(服役的第二天和第三天)中,骑士获得两枚金币。在接下来的三天(服役的第四天,第五天和第六天)中,骑士获得三枚金币。在接下来的四天(服役的第七天,第八天,第九天和第十天)中,骑士获得四枚金币。这种付款模式将无限期地继续:在连续N天的每一天收到N金币后,骑士将在接下来的N + 1天连续每天收到N + 1金币,其中N是任何正整数。 

    您的程序将确定在任何给定天数(从第1天开始)支付给骑士的金币总数。 

    输入:

    输入包含至少一行但不超过21行。输入文件的每一行(最后一行除外)包含问题的一个测试用例的数据,由一个整数(在1..10000范围内)组成,表示天数。输入的结尾由包含数字0的行发出信号。

    输出:

    每个测试用例只有一行输出。此行包含相应输入行的天数,后跟一个空格以及从第1天开始在给定天数内支付给骑士的金币总数。

    样例输入:

    10
    6
    7
    11
    15
    16
    100
    10000
    1000
    21
    22
    0

    样例输出:

    10 30
    6 14
    7 18
    11 35
    15 55
    16 61
    100 945
    10000 942820
    1000 29820
    21 91
    22 98

    想法:把每天需要给的金币数列出来,每个阶段一行,就像这样:

    1

    2  2

    3  3  3

    ...  ...  ...

    n  ...  ...  n

    恰好每一行的数字和行一样,用一个变量计数直到给定天数,将金币逐行累加,每一列从1到行号,每加一个数就计数一次,计数到给定天数结束。

    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) throws Exception {
    		Scanner sc = new Scanner(System.in);
    		while(sc.hasNext()) {
    			int day=0,n=0,money=0;
    			day = sc.nextInt();
    			if(day==0) break;
    			for(int i=1,cn=1;cn<=day;i++) {//cn记录天数,从1开始,直到给定天数day
    				for(int j=1;j<i+1&&cn<=day;j++,cn++) {
    					money+=i;
    				}
    			}
    			System.out.println(day+" "+ money);
    		}
    		sc.close();
    	}
    }
  • 相关阅读:
    JAVA--导数到Mongodb
    关于jquery的事件委托-bind,live,delegate,on的区别发展
    cookies localStorage和sessionStorage的区别
    px em 和rem之间的区别
    js中string常用方法
    js中number常用方法
    json格式常用操作
    Node.js到底是做什么的?这是我看到最好的解释了
    数组常用操作方法
    JQuery.Ajax()的data参数类型
  • 原文地址:https://www.cnblogs.com/minicui/p/9848649.html
Copyright © 2020-2023  润新知