11月27-29日洛谷两道练习题

思路:先写一个for循环让i从1自增到n,再从for循环里写一个if判断语句,如果i能被k整除则求和,并定义一个数自加来记录A类数的个数,方便随后求平均值,B类数同前面处理。

import java.util.Scanner;
public class luoGuPractice1 {
public static void main(String[] args) {
	int a=0,b=0,sumA=0,sumB=0;
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入小于等于10000且大于等于1的整数n");
	int n = sc.nextInt();
	System.out.println("请输入小于等于100且大于等于1的整数k");
	int k = sc.nextInt();
	for(int i=1;i<=n;i++) {
		if(i%k==0) {
			sumA+=i;
			a++;
		}else {
			sumB+=i;
			b++;
		}
	}
	double avgA=sumA/a;
	double avgB=sumB/b;
	System.out.println("能被k整除的数的和为"+sumA);
	System.out.println("不能被k整除的数的和为"+sumB);
	System.out.println("A类数的平均值为"+avgA);
	System.out.println("B类数的平均值为"+avgB);
}
}

思路:第一个阶段共1*1=1个金币,第二阶段共2*2=4个金币,第三个阶段共3*3=9个金币......以此类推,而我的做法是判断在k天里一共有几个阶段,再求这些阶段的平方和就是骑士的工资,但如果最后一个阶段不是完整的阶段该怎么办呢,这时候第二个if判断就很关键了,第一个判断先求得前面完整阶段的平方和,并求得剩余天数,然后用第二个判断的条件(求和小于等于天数k,加上i+1大于等于天数k)求得此时的阶段数i+1,再用剩余天数乘i+1,加上之前求得的工资就是骑士k天总共的的工资。

import java.util.Scanner;
public class luoGuPractice2 {
public static void main(String[] args) {
	int sum=0,a=0,end=0,pay=0;
	@SuppressWarnings("resource")
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入天数k");
	int k = sc.nextInt();
	for(int i=1;i<=k;i++) {
		sum+=i;
		if(sum<=k) {
			pay+=i*i;
			a=k-sum;
		}
		if(sum<k&&(sum+(i+1))>k) {
			end=a*(i+1);
			pay+=end;
		}
	}
	System.out.println("骑士的工资为"+pay);}
}

如果学长学姐们有更好的方法可以分享一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值