๐•ƒ๐•ฆ๐•„๐•š๐•ฃ

ใ€ŒโŒจ๏ธแด„sใ€PS/๋ฐฑ์ค€_์ˆ˜ํ•™&๊ตฌํ˜„

[Baekjoon/๋ฐฑ์ค€][1009][C/C++] ๋ถ„์‚ฐ์ฒ˜๋ฆฌ

by ๋ฃจ๋ฐ€๐•ƒ๐•ฆ๐•„๐•š๐•ฃ2023. 1. 17.
728x90
๋ฐ˜์‘ํ˜•
ใ€Ž๋ชฉ์ฐจใ€
0. ๊ฐœ์š”

1. ๋ฌธ์ œ
2. ํ’€์ด
3. ์ฝ”๋“œ

0. ๊ฐœ์š”

๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€๋ฆด ์ค„ ์•Œ๊ณ  ํ˜ธ๊ธฐ๋กญ๊ฒŒ ํ’€์–ด๋‚˜๊ฐ”์ง€๋งŒ, ์ƒ๊ฐ๋ณด๋‹ค ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋˜ ๋ฌธ์ œ์ด๋‹ค. ์˜ค๋žœ๋งŒ์— ๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•ด์„œ ๊ทธ๋Ÿฐ๊ฐ€ ๋‡Œ๊ฐ€ ๊ตณ์–ด์žˆ๋Š” ๋Š๋‚Œ. ์ด ๋ฌธ์ œ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋Š” '์ˆ˜ํ•™'๊ณผ '๊ตฌํ˜„'์ด๋‹ค. '๊ฐ™์€ ์ˆ˜๋ฅผ ๋ฌดํ•œํžˆ ๊ณฑํ•ด๋‚˜๊ฐˆ ์‹œ, ์ผ์˜ ์ž๋ฆฌ๋Š” ์ตœ๋Œ€ 4์ฃผ๊ธฐ๋กœ ๊ฐ™์€ ์ˆ˜๊ฐ€ ๋ฐ˜๋ณต๋œ๋‹ค'๋ผ๋Š” ์ˆ˜ํ•™์  ์›๋ฆฌ๋ฅผ ๊นจ๋‹ฌ์œผ๋ฉด ๋ฌธ์ œ๋Š” ์‰ฝ๊ฒŒ ํ’€๋ฆฐ๋‹ค. 

1. ๋ฌธ์ œ

https://www.acmicpc.net/problem/1009

 

1009๋ฒˆ: ๋ถ„์‚ฐ์ฒ˜๋ฆฌ

์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ ๊ฐ๊ฐ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ์ •์ˆ˜ a์™€ b๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ a < 100, 1 ≤ b < 1,000,000)

www.acmicpc.net

[๋ฌธ์ œ]

์žฌ์šฉ์ด๋Š” ์ตœ์‹  ์ปดํ“จํ„ฐ 10๋Œ€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์–ด๋Š ๋‚  ์žฌ์šฉ์ด๋Š” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ๋  ์ผ์ด ์ƒ๊ฒจ์„œ ๊ฐ ์ปดํ“จํ„ฐ์— 1๋ฒˆ๋ถ€ํ„ฐ 10๋ฒˆ๊นŒ์ง€์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , 10๋Œ€์˜ ์ปดํ“จํ„ฐ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

1๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 1๋ฒˆ ์ปดํ“จํ„ฐ, 2๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 2๋ฒˆ ์ปดํ“จํ„ฐ, 3๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 3๋ฒˆ ์ปดํ“จํ„ฐ, ... ,

10๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 10๋ฒˆ ์ปดํ“จํ„ฐ, 11๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 1๋ฒˆ ์ปดํ“จํ„ฐ, 12๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 2๋ฒˆ ์ปดํ“จํ„ฐ, ...

์ด ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ ab๊ฐœ์˜ ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง„๋‹ค. ์žฌ์šฉ์ด๋Š” ๋ฌธ๋“ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋  ์ปดํ“จํ„ฐ์˜ ๋ฒˆํ˜ธ๊ฐ€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ด ์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.

[์ž…๋ ฅ]

์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ ๊ฐ๊ฐ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ์ •์ˆ˜ a์™€ b๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ a < 100, 1 ≤ b < 1,000,000)

[์ถœ๋ ฅ]

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ์ปดํ“จํ„ฐ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

[์˜ˆ์ œ ์ž…๋ ฅ 1]

5
1 6
3 7
6 2
7 100
9 635

[์˜ˆ์ œ ์ถœ๋ ฅ 1]

1
7
6
1
9

2. ํ’€์ด

[๋ฌธ์ œ ์ดํ•ด]

1๋ฒˆ, 11๋ฒˆ, 21๋ฒˆ, 31๋ฒˆ, ... ํ•ด์„œ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ)๊ฐ€ 1์ธ ๋ฐ์ดํ„ฐ๋“ค์€ 1๋ฒˆ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ.

2๋ฒˆ, 12๋ฒˆ, 22๋ฒˆ, 32๋ฒˆ, ... ํ•ด์„œ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ)๊ฐ€ 2์ธ ๋ฐ์ดํ„ฐ๋“ค์€ 2๋ฒˆ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ.

3๋ฒˆ, 13๋ฒˆ, 23๋ฒˆ, 33๋ฒˆ, ... ํ•ด์„œ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ)๊ฐ€ 3์ธ ๋ฐ์ดํ„ฐ๋“ค์€ 3๋ฒˆ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ.

...

9๋ฒˆ, 19๋ฒˆ, 29๋ฒˆ, 39๋ฒˆ, ... ํ•ด์„œ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ)๊ฐ€ 9์ธ ๋ฐ์ดํ„ฐ๋“ค์€ 9๋ฒˆ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ.

10๋ฒˆ, 20๋ฒˆ, 30๋ฒˆ, 40๋ฒˆ, ... ํ•ด์„œ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ)๊ฐ€ 0์ธ ๋ฐ์ดํ„ฐ๋“ค์€ 10๋ฒˆ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ.

 

์ฆ‰, ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ๋ฉด, ๋งˆ์ง€๋ง‰์— ์ฒ˜๋ฆฌ๋  ๋ฐ์ดํ„ฐ์˜ ๋ฒˆํ˜ธ๋ฅผ ์•Œ๊ฒŒ ๋˜๊ณ , ํ•ด๋‹น ๋ฐ์ดํ„ฐ์˜ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ)๋ฅผ ์•Œ๊ฒŒ ๋˜๋ฉด, ๋ช‡ ๋ฒˆ ์ปดํ“จํ„ฐ๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ• ์ง€ ์•Œ๊ฒŒ ๋œ๋‹ค.

 

∴ ์ž…๋ ฅ๋ฐ์ดํ„ฐ์˜ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ)๋ฅผ ์•Œ์•„๋‚ด๋ฉด ๋ฌธ์ œ๋Š” ํ’€๋ฆฌ๊ฒŒ ๋œ๋‹ค.

 

[์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํ˜•์‹]

T๋Š” ํ…Œ์ด์Šค ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜. ์ฆ‰, ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

a๋Š” ๋ฐ‘.

b๋Š” ์ง€์ˆ˜.

 

∴ $a^b$๊ฐ’์˜ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ)๋ฅผ ์•Œ์•„๋‚ด๋ฉด ๋œ๋‹ค.

 

[์ง๊ด€์ ์ธ ํ’€์ด1] = ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(Overflow) ๋ฐœ์ƒ.

(int)pow(a,b) % 10

๋‹จ์ˆœํ•˜๊ฒŒ, math.h  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์กด์žฌํ•˜๋Š” pow() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ $a^b$๊ฐ’์„ ๊ตฌํ•˜๊ณ , ํ•ด๋‹น๊ฐ’์˜ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ)๋ฅผ ๊ตฌํ•˜๋ฉด ์–ด๋–จ๊นŒ? a์˜ ์ตœ๋Œ“๊ฐ’์€ 99, b์˜ ์ตœ๋Œ“๊ฐ’์€ 999,999 ์ด๋ฏ€๋กœ pow(99, 999999)์˜ ๊ฐ’์€ ๊ฑฐ์˜  $100^{10^6}$์œผ๋กœ ๊ทธ ๊ฐ’์ด ์–ด๋งˆ๋ฌด์‹œํ•˜๊ฒŒ ์ปค์ง„๋‹ค. ์ด๋Š” ํŠน์ • ์ž๋ฃŒํ˜•์ด ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ, ์ปดํ“จํ„ฐ๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(Overflow) ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ฒŒ ๋œ๋‹ค. 

 

[์ง๊ด€์ ์ธ ํ’€์ด2] = ์‹œ๊ฐ„๋ณต์žก๋„ O(n). ์ด ๋ฐฉ์‹์œผ๋กœ ํ’€๊ฒŒ๋˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์˜ค๋‹ต ์ฒ˜๋ฆฌ๋œ๋‹ค.

#pragma warning(disable:4996) //visual studio scanf ์˜ค๋ฅ˜ ๋ฐฉ์ง€.
#include <stdio.h>

int get_units(int a, int b) {
	int units = a % 10;

	for (int i = 1; i < b; i++)
		units = (units * a) % 10;
        
		/*
		units = ( units * (a%10) ) % 10 
		์œ„ ์‹์œผ๋กœ ๊ณ„์‚ฐํ•ด๋„ ๋œ๋‹ค.
		*/
        
	return units;
}

int main(int argc, char* argv[]) {
	/* ๋ณ€์ˆ˜์„ ์–ธ */
	int a, b, T;

	/* ์ž…๋ ฅ๊ฐ’ ๋ฐ›์€ ํ›„ ์—ฐ์‚ฐ */
	scanf("%d", &T);
	for (int i = 0; i < T; i++) {
		scanf("%d %d", &a, &b);
		printf("%d\n", get_units(a, b) == 0 ? 10 : get_units(a, b));
	}

	return 0;
}

์œ„ ์ฝ”๋“œ์—์„œ get_units(int a, int b) ํ•จ์ˆ˜๋Š” a์™€ b๋ฅผ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ›์•„, $a^b$์˜ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ) ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

[์ง๊ด€์ ์ธ ํ’€์ด1]์—์„œ ๋ฐœ์ƒํ•œ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด, %10 ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๊ฐ’์˜ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค. ๋‹ค๋งŒ, ์ด ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ ๋ณ€์ˆ˜ b์— ๋Œ€ํ•ด O(n)์˜ ์„ ํ˜•์ ์ธ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ง€๋‹Œ๋‹ค. ์ฆ‰, b์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„๋„ ๊ทธ์— ๋น„๋ก€ํ•˜์—ฌ ์ฆ๊ฐ€ํ•œ๋‹ค.

 

์—ญ์‹œ๋‚˜ ์œ„ ํ’€์ด๋Œ€๋กœ ๋ฐฑ์ค€์— ์ฑ„์ ์„ ์š”์ฒญํ•œ ๊ฒฐ๊ณผ, ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

O(n)์—์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋”์šฑ ์ค„์—ฌ์•ผ ํ–ˆ๋Š”๋ฐ, ์•„๋ž˜ ์„œ์ˆ ํ•  ์ˆ˜ํ•™์  ์›๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋‹ˆ O(1) ์ƒ์ˆ˜์‹œ๊ฐ„ ๋‚ด๋กœ ๋ฌธ์ œ๊ฐ€ ํ’€๋ ธ๋‹ค.

 

[์ •๋‹ต] = ์‹œ๊ฐ„๋ณต์žก๋„ O(1)

๊ณ ๋ฏผ์„ ํ•ด๋ณด์ž. ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ•ด์•ผ ํ•  ๊ฐ’์€ $a^b$์˜ ๋์ž๋ฆฌ(=์ผ์˜์ž๋ฆฌ) ์ด๋‹ค. 

$a^b$๋ž€ a๋ž€ ๊ฐ’์„ b๋ฒˆ ๊ณฑํ–ˆ์„ ๋•Œ ์–ป์–ด์ง€๋Š” ์ˆ˜์ด๋‹ค, b๋ฒˆ์˜ ๊ณฑ์…ˆ์„ ๋ฐ˜๋ณตํ–ˆ์„ ๋•Œ, ์ผ์˜์ž๋ฆฌ ์ˆ˜์˜ ๋ณ€ํ™”์—๋Š” ๊ทœ์น™์ด ์กด์žฌํ• ๊นŒ?

  [b%4=1]
1๋ฒˆ, 5๋ฒˆ, 9๋ฒˆ, .. 
[b%4=2]
2๋ฒˆ, 6๋ฒˆ, 10๋ฒˆ, .. 
[b%4=3]
3๋ฒˆ, 7๋ฒˆ, 11๋ฒˆ, .. 
[b%4=0]
4๋ฒˆ, 8๋ฒˆ, 12๋ฒˆ, .. 
์ผ์˜์ž๋ฆฌ = 0 0 0 0 0
์ผ์˜์ž๋ฆฌ = 1 1 1 1 1
์ผ์˜์ž๋ฆฌ = 2 2 4 8 6
์ผ์˜์ž๋ฆฌ = 3 3 9 7 1
์ผ์˜์ž๋ฆฌ = 4 4 6 4 6
์ผ์˜์ž๋ฆฌ = 5 5 5 5 5
์ผ์˜์ž๋ฆฌ = 6 6 6 6 6
์ผ์˜์ž๋ฆฌ = 7 7 9 3 1
์ผ์˜์ž๋ฆฌ = 8 8 4 2 6
์ผ์˜์ž๋ฆฌ = 9 9 1 9 1

์œ„ ํ‘œ๋ฅผ ํ†ตํ•ด '๊ฐ™์€ ์ˆ˜๋ฅผ ๋ฌดํ•œํžˆ ๊ณฑํ•ด๋‚˜๊ฐˆ ์‹œ, ์ผ์˜์ž๋ฆฌ๋Š” ์ตœ๋Œ€ 4์ฃผ๊ธฐ๋กœ ๊ฐ™์€ ์ˆ˜๊ฐ€ ๋ฐ˜๋ณต๋œ๋‹ค' ๋ผ๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ฌ์„ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์œ„ ํ‘œ์™€ ๊ฐ™์€ ๋ฐฐ์—ด์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘” ํ›„, a์™€ b์— ์ ์ ˆํ•œ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๊ฐ’์„ ์„œ๋กœ ๋งค์นญ์‹œํ‚ค๋ฉด O(1)์˜ ์‹œ๊ฐ„ ๋‚ด๋กœ ๋ฌธ์ œ๊ฐ€ ํ’€๋ฆฌ๊ฒŒ ๋œ๋‹ค.

 

๋‹จ, ์ •๋‹ต ์ฝ”๋“œ์— ๋งŒ๋“ค์–ด๋‘” ํ…Œ์ด๋ธ” = table[10][4] ์€ ๊ฐ’์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ €์žฅ๋จ์„ ์œ ์˜ ๋ฐ”๋ž€๋‹ค.

  [b%4=0]
4๋ฒˆ, 8๋ฒˆ, 12๋ฒˆ, .. 
[b%4=1]
1๋ฒˆ, 5๋ฒˆ, 9๋ฒˆ, .. 
[b%4=2]
2๋ฒˆ, 6๋ฒˆ, 10๋ฒˆ, .. 
[b%4=3]
3๋ฒˆ, 7๋ฒˆ, 11๋ฒˆ, .. 
์ผ์˜์ž๋ฆฌ = 0 0 [0][0] 0 [0][1] 0 [0][2] 0 [0][3]
์ผ์˜์ž๋ฆฌ = 1 1 [1][0] 1 [1][1] 1 [1][2] 1 [1][3]
์ผ์˜์ž๋ฆฌ = 2 6 [2][0] 2 ... 4 8
์ผ์˜์ž๋ฆฌ = 3 1 [3][0] 3 9 7
์ผ์˜์ž๋ฆฌ = 4 6 [4][0] 4 6 4
์ผ์˜์ž๋ฆฌ = 5 5 [5][0] 5 5 5
์ผ์˜์ž๋ฆฌ = 6 6 [6][0] 6 6 6
์ผ์˜์ž๋ฆฌ = 7 1 [7][0] 7 9 3
์ผ์˜์ž๋ฆฌ = 8 6 [8][0] 8 4 2
์ผ์˜์ž๋ฆฌ = 9 1 [9][0] 9 1 9

 

[์ฃผ์˜ํ•  ์ ]

์ผ์˜ ์ž๋ฆฌ ์ˆ˜๊ฐ€ 0์ด๋ผ๋ฉด, ์ด๋Š” 10๋ฒˆ์งธ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ’์ด๋‹ค. 0๋ฒˆ์งธ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ’์ด ์•„๋‹ˆ๋‹ค...์ด๊ฒƒ ๋•Œ๋ฌธ์— ๋ช‡ ๋ฒˆ ํ‹€๋ ธ๋‹ค. ์กฐ์‹ฌํ•˜์ž.

3. ์ฝ”๋“œ

#pragma warning(disable:4996) //visual studio scanf ์˜ค๋ฅ˜ ๋ฐฉ์ง€.
#include <stdio.h>

int table[10][4]; //ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ

int power(int a, int b) { //๊ฑฐ๋“ญ์ œ๊ณฑ ํ•จ์ˆ˜

	if (b == 0)
		return 1;
	else
		return power(a, b - 1) * a;

}

void make_table(void) { //ํ…Œ์ด๋ธ” ์ฑ„์›Œ๋„ฃ๊ธฐ
	
	for (int i = 0; i < 10; i++)
		for (int j = 1; j <= 4; j++)
			table[i][j % 4] = (int)power(i, j) % 10;
		/*
		math.h์˜ pow()๋ฅผ ์ด์šฉํ•˜์—ฌ,
		table[i][j % 4] = (int)pow(i, j) % 10; 
		์œผ๋กœ ๊ตฌํ˜„ํ•ด๋„ ๋œ๋‹ค.
		(math.h ํ•จ์ˆ˜๋Š” ๋ฐ˜ํ™˜ํ˜•์ด double์ด๋ฏ€๋กœ, int๋กœ ํ˜•๋ณ€ํ™˜ ํ•ด์ค€๋‹ค.)
		*/

}

int main(int argc, char* argv[]) {

	/* ๋ณ€์ˆ˜์„ ์–ธ */
	int a, b, T;

	/* ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ */
	make_table();

	/* ์ž…๋ ฅ๊ฐ’ ๋ฐ›์€ ํ›„ ์—ฐ์‚ฐ */
	scanf("%d", &T);
	for (int i = 0; i < T; i++) {
		scanf("%d %d", &a, &b);
		printf("%d\n", table[a % 10][b % 4] == 0 ? 10 : table[a % 10][b % 4]);
	}

	return 0;
}
728x90
๋ฐ˜์‘ํ˜•