답안 #22648

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
22648 2017-04-30T06:07:10 Z 응 내인생 터졌어~(#957, sosfd) August14 Beginner Contest (KRIII5_ABC) C++
0 / 7
0 ms 313616 KB
#include <stdio.h>

unsigned long long dp[40000000];

long long go(int i)
{
	if (dp[i] !=0) return dp[i];


	return dp[i] =  1 + go(i - go(go(i - 1)));
}


unsigned long long po(unsigned int a, unsigned int b)
{
	if (b == 0)
		return 1;
	else if (b == 1)
		return a;

	unsigned long long ret = po(a, b/2) % 1000000007;

	ret = ret*ret;
	ret %= 1000000007;

	if (b % 2)
		return (ret* a)%1000000007;
	else
		return ret;

}

int main()
{
	dp[1] = 1;
	
	unsigned long long sum = 0,n,ans =1;
	scanf("%llu", &n);

	
	for (int i = 1; i < 40000000; i++)
	{
		sum += go(i);

		if (sum >= n)
		{
			sum -= go(i);
			
			ans *= po(i, n - sum);
			ans %= 1000000007;

			break;
		}

		ans *= po(i, go(i));
		ans %= 1000000007;
	} 

	printf("%llu", ans);
	return 0;
}

Compilation message

ABC.cpp: In function 'int main()':
ABC.cpp:38:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%llu", &n);
                   ^
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 313616 KB Unexpected end of file - token expected