https://www.acmicpc.net/problem/2292
2292๋ฒ: ๋ฒ์ง
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ก๊ฐํ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฒ์ง์ด ์๋ค. ๊ทธ๋ฆผ์์ ๋ณด๋ ๋ฐ์ ๊ฐ์ด ์ค์์ ๋ฐฉ 1๋ถํฐ ์์ํด์ ์ด์ํ๋ ๋ฐฉ์ ๋์๊ฐ๋ฉด์ 1์ฉ ์ฆ๊ฐํ๋ ๋ฒํธ๋ฅผ ์ฃผ์๋ก ๋งค๊ธธ ์ ์๋ค. ์ซ์ N์ด ์ฃผ์ด์ก
www.acmicpc.net
1. ๋ฌธ์
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ก๊ฐํ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฒ์ง์ด ์๋ค. ๊ทธ๋ฆผ์์ ๋ณด๋ ๋ฐ์ ๊ฐ์ด ์ค์์ ๋ฐฉ 1๋ถํฐ ์์ํด์ ์ด์ํ๋ ๋ฐฉ์ ๋์๊ฐ๋ฉด์ 1์ฉ ์ฆ๊ฐํ๋ ๋ฒํธ๋ฅผ ์ฃผ์๋ก ๋งค๊ธธ ์ ์๋ค. ์ซ์ N์ด ์ฃผ์ด์ก์ ๋, ๋ฒ์ง์ ์ค์ 1์์ N๋ฒ ๋ฐฉ๊น์ง ์ต์ ๊ฐ์์ ๋ฐฉ์ ์ง๋์ ๊ฐ ๋ ๋ช ๊ฐ์ ๋ฐฉ์ ์ง๋๊ฐ๋์ง(์์๊ณผ ๋์ ํฌํจํ์ฌ)๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค๋ฉด, 13๊น์ง๋ 3๊ฐ, 58๊น์ง๋ 5๊ฐ๋ฅผ ์ง๋๋ค.
2. ์ ๋ ฅ
์ฒซ์งธ ์ค์ N(1 ≤ N ≤ 1,000,000,000)์ด ์ฃผ์ด์ง๋ค.
3. ์ถ๋ ฅ
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฐฉ๊น์ง ์ต์ ๊ฐ์์ ๋ฐฉ์ ์ง๋์ ๊ฐ ๋ ๋ช ๊ฐ์ ๋ฐฉ์ ์ง๋๋์ง ์ถ๋ ฅํ๋ค.
4. ๋ฌธ์ ํ์ด
0~1
2~7
8~19
20~37
์ด์ ์์ 6์ ๋ฐฐ์๋งํผ ๋์ด๋๋ค
์ฆ,
7 = 1+6*1
19 = 7 + 6*2
์ด๋, 1์ ์์ธ๋ก ์ฒ๋ฆฌํ๊ณ ๊ทธ ๋ค์ ์นธ๋ถํฐ ๋ฑ๋น์์ด ํ์์ผ๋ก ํ์ด๊ฐ๋ค.
1< number <= 7 -> 1+(6*0) < number < 1 + (6*1)
7< number <=19 -> 1+(6*1) < number < 7 + (6*2)
19 < number <= 37 -> 7+(6*2) < number < 19 + (6*3)
๋ ์ ์ฌ์ด์ ์์ผ๋ฉด while๋ฌธ์ ์ข ๋ฃํ๊ณ ๋์จ๋ค.
C code
#include <stdio.h>
int main()
{
int number =0;
scanf("%d",&number);
int i=1;
int a=1;
int b=1;
if(number==1){
printf("%d\n",1);
return 0;
}
while(1){
a = a + 6*(i-1);
b = b + 6*i;
if(a< number && number <= b){
printf("%d\n", i+1);
break;
}
i++;
}
return 0;
}