๋ฌธ์
https://www.acmicpc.net/problem/4673
์ค๋ช
์ด๋ฌธ์ ๋ ์ ์ ํ์๋ ์์ ๋ฌธ์ ์ ์ ์ฌํ๊ฒ ์ผ๋จ ํด๋นํ์ง ์๋ ์๋ฅผ ๊ฑฐ๋ฅด๊ณ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์งฐ๊ธฐ๋๋ฌธ์ 10001 ์ ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ๋ง๋๊ฒ ์๋๊ฒ์ ๋ค ํ์ํ์ฌ ์๋๊ฒ์ ๋ฐ๋ก ๋ค์ for๋ฌธ์ผ๋ก ์ถ๋ ฅํ๋๋ก ํ์๋ค. ์ฌ์ค ์๋ฆฟ์๋ฅผ ๋ถ๋ฆฌํ๋ ๋ถ๋ถ๋๋ฌธ์ ๊ธธ์ด๊ฐ ๋๊ธธ์ด์ก๋ค. ๊ทธ๋ฐ๋ฐ ๋ ์ค์ด๋ ๋ฐฉ๋ฒ์ด ์์์ง๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค. ์ผ๋จ ๋ง์ถ๊ธด ํ์ผ๋ ์ฝ๊ฐ ํ๋์ฝ๋ฉ์ ํ๋ค๋ ๋๋์ด ๋๋๊ฑด ์ด์ฉ์ ์๋ ๋ฏ ํ๋ค.
์ฝ๋
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int arr[10001];
for (int i = 0; i <= 10000; i++)
arr[i] = 0;
for (int i = 1; i <= 10000; i++)
{
int line = 0,num[5];
if (i < 10)//1์์๋ฆฌ ์
{
line = 1;
num[0] = i;
}
else if (i < 100) //10์ ์๋ฆฌ ์
{
line = 2;
num[0] = i % 10;
num[1] = i/10;
}
else if (i < 1000) // 100์ ์๋ฆฌ ์
{
line = 3;
num[2] = i / 100;
num[1] = (i - (num[2] * 100)) / 10;
num[0] = (i - (num[2] * 100)) % 10;
}
else if (i < 10000) // 1000์ ์๋ฆฌ ์
{
line = 4;
num[0] = i % 10;
num[1] = (i % 100) / 10;
num[2] = (i % 1000) / 100;
num[3] = i / 1000;
}
else // 10000
{
line = 5;
num[4] = 1;
for (int j = 0; j <= 3; j++)
num[j] = 0;
}
int temp=0;
temp += i;
for (int j = 0; j < line; j++)
temp += num[j];
if (temp <= 10000)
arr[temp - 1] = 1;
}
for (int i = 0; i <10000; i++)
{
if (arr[i] == 0)
printf("%d\n", i + 1);
}
return 0;
}