제출 #8558

#제출 시각아이디문제언어결과실행 시간메모리
8558a555팩토리얼 세제곱들의 합 (YDX14_fact)C++98
1 / 1
0 ms1676 KiB
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <stdio.h>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <math.h>
#include <bitset>
#include <numeric>



#pragma warning(disable:4996)

#define REP(variable, repeatnumber) for(int variable=0; variable<(repeatnumber); ++variable)
#define FOR(variable, start, end) for(int variable=(start); variable<=(end); ++variable)
#define RFOR(variable, start, end) for(int variable=(start); variable>=(end); --variable)
#define ULL unsigned long long
#define LL long long 
using namespace std; // 700B

int n, k, p;

int ma(int r){
	int a = r;
	while (1){
		if (a % 10 != 0){
			a = a % 10;
			break;
		}
		a /= 10;
	}
	return a;
}

int fun1(int n, int k){
	int a = 1, r = 1;
	FOR(i, 1, n) a *= i;
	REP(i, k) r *= a;
	return r;
}

int fun(int n, int k){
	int a = 1;
	FOR(i, 1, n){
		a += fun1(i, k);
		//cout << i << " " << fun1(i, k) <<" "<< a << endl;
	}
	if(a!=0)a = ma(a);
	return a;
}

int kzro(int n, int k){
	int r = n + 1;
	return ma(r);
}

int main()
{	
	scanf("%d%d", &n, &k);

	if (n > 4 && k != 0) n = 4;
	if (k == 0) printf("%d\n", kzro(n, k));
	else printf("%d\n", fun(n, k));


	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...