JAVA - 누적 금액 퀴즈 (2022-07-13)

2022. 7. 14. 00:423층 1구역 - 개발의 장/JAVA

package loop_for_0713;

import java.math.BigInteger;

public class Quiz4 {
//Biginteger (long을 넘어가는 큰 데이터를 사용)
	public static void main(String[] args) {
		System.out.println("1에서 1000까지 자연수중에서 4로 나누어도 6으로 나누어도 나머지가 1이 되는 값들의 합");
		int total = 0;
		for(int i = 1; i < 1001; i++)
			if(i % 4 == 1 && i % 6 == 1)
				total += i;
		System.out.println("합 : " + total);
		
		System.out.println("\n첫날에 1원을 저축하고, 다음날에 전날의 2배씩 증가하는 방식, 30일동안 저축한 금액은?");
		int sum = 0;
		int i;
		int money = 1;
		for(i=1; i <= 30; i++) {
			//30일까지 입금한 금액을 확인하기 위한 조건
			sum = sum + money;
			//다음일자가 되기전에 금액을 2배해준다.
			money = money * 2;
		}
		System.out.println("30일동안 저축한 돈은 " + money + "원 입니다.");
			
		System.out.println("\n전설에 따르면 체스 발명자는 왕으로부터 받을 상을 말하도록 요구 받았을 때");
		System.out.println("발명자가 말하길 체스 판의 첫 번째 사각형에는 밀알을 1개, 두번째 사각형에는 밀알 2개를");
		System.out.println("세 번째 사각형에는 밀알4개등으로 총 64칸에 밀알을 2배씩 채워주기를 요구 했다.");
		System.out.println("이 발명가가 요구한 밀알의 총 개수는?");
		//int seed = 1;
		//total = 0;
		//long milTotal = 0;
		//long milSeed = 1;
		//for(int j = 1; j <= 64; j++) {
		//milTotal = milTotal + milSeed;
		//System.out.println(j + " 칸, 누적개수 : " + milTotal);
		//milSeed = milSeed * 2;
		//}
		//System.out.println("밀알의 총 개수 : " + milTotal);

		
		BigInteger milTotal = new BigInteger("0"); // == long milTotal = 0(BigInteger를 적용시 문자열로 적용 "0")
		BigInteger milSeed = new BigInteger("1"); // == long milSeed = 1
		BigInteger two = new BigInteger("2"); // == milSeed = milSeed * 2에서 2의 값
		for(int j = 1; j <= 64; j++) {
			milTotal = milTotal.add(milSeed);
			milSeed = milSeed.multiply(two);
		}
		System.out.println("64칸에 둘 밀알의 총 개수 : " + milTotal);
}
}