반응형

백준 더하기 사이클 문제 풀이

 

 

 

입력한 값 n을 이용해서 x,y를 만들고 (x=n/10, y=n%10)

새롭게 만들어진 값 (임시 저장 값) tmp = (y + (x+y+의 10으로 나눈 나머지 값))을 입력값 n과 같아질 때까지 반복

 

26을 예로 들면

26 (x=2, y=6)

-> 2+6 = 8

-> (x+y)

tmp = 68

-> (10*y + (x+y)%10)

= 6*10 + (8)%10 과 같다

 

이 과정을  4번 반복하면 기존 입력한 값인 26이 나옴

 

 

구현은

이러한 루틴을 통해서 입력받은 값 26과 중간 과정 값이 일치할 때까지 while문 조건에 넣어서 반복시켰다

 

예제 값인 26을 입력했을때, 처음에 횟수를 출력할 cnt가 3이 나와서 뭐지했는데

이미 앞에서 tmp를 더한걸 추가해주지않아서 1보다 작은값이 나옴 ㅎ

 

 

#include<bits/stdc++.h>
using namespace std;
//BOJ 1110

int main() {
	int n = 0;
	int cnt = 0;    
	cin >> n;
    
	int x = n/10;
	int y = n%10;
    
	int tmp = y*10+(x+y)%10;
    
	cnt++;
    
	while(tmp!= n){
		x = tmp/10;
		y = tmp%10;
		tmp = y*10+(x+y)%10;
		cnt++;
	}
	
    cout<<cnt;
	
    return 0;
}

 

 

출처 : www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

반응형
반응형

 

   472

 * 385

 ㅡㅡㅡ

  2360 = (472*5)

 3776  = (472*8*10)

1416   = (472*3*100)

ㅡㅡㅡㅡ

181720 = (472*385)

 

2360은 단순하게 472와 5의 곱셈으로 표현이 가능하다

385에서 5를 추출해내는 방법은 10으로 나눈 나머지가 제일 간편하다고 생각

 

3776은 472*8의 값으로 실제 우리가 곱셈을 할 때는 80의 곱셈에서 10을 생략한 값을 쓰니까

385에서 8을 추출해내서 곱셈 값을 출력해줌

 

1416은 472*3과 같으므로 385를 100으로 나눈 몫을 사용했다

 

 

마지막 총합인 181720은 처음에 출력 값에 저 모든 값을 더했는데

생각해보니 그냥 곱셈값을 적으면 되는거라 더 단순하게 수정함

 

#include<bits/stdc++.h>

using namespace std;
int main (){
	
	int a,b;
	cin >> a;
	cin >> b;
	cout << a*(b%10) << "\n";
	cout << a*((b/10)%10) << "\n";
	cout << a*(b/100) << "\n";
	cout << a*b;
	return 0;
}

 

 

 

www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

 

반응형
반응형

백준에 올라와있는 문제 중 윤년 문제 풀이

 

 

 

 

 

4의 배수이면서, 100의 배수가 아니거나 400의 배수인 경우, 윤년이라고 볼 수 있다

 

따라서 4로나눈 나머지가 0 임과 동시에 400으로 나눈 나머지가 0

또는 100으로 나누었을 경우 나머지가 0이 아니어야 한다

 

 

 

#include<bits/stdc++.h>
using namespace std;

int main (){

	int N=0;
	cin >> N;
    
	if(N%4 == 0 && (N%400==0 || N%100 !=00)){
		cout << 1;
	}
	else{
		cout << 0;
	}
    
	return 0;
}

 

 

 

www.acmicpc.net/problem/2753

 

 

 

2753번: 윤년

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서

www.acmicpc.net

 

반응형

+ Recent posts