Submission #22854

#TimeUsernameProblemLanguageResultExecution timeMemory
22854의식의흐름코딩 (#40)Fully Generate (KRIII5_FG)C++14
7 / 7
209 ms2872 KiB
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <utility>
#include <functional>
#include <list>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <map>
#define MOD 1000000007
using namespace std;

long long dnq(long long a, int n)
{
	if (n == 1)
		return a%MOD;
	if (n % 2 == 0)
	{
		long long k = dnq(a, n / 2);
		return (k*k)%MOD;
	}
	else
		return (a*dnq(a, n - 1))%MOD;
}

int main() {
	//freopen("input.txt", "r", stdin);
	long long n;
	scanf("%lld", &n);
	vector<pair<int, int> > v;
	v.push_back(make_pair(1, 2));
	long long sum = 1;
	for (long long t = 0, k = 2; sum <= n; k++)
	{
		if (sum + v[t].second*k > n)
		{
			long long s = v.back().first + 1;
			if (sum + k <= n)
			{
				while (sum + k <= n)
				{
					s++;
					sum += k;
				}
				v.push_back(make_pair(s - 1, k));
			}
			if(n - sum > 0)
				v.push_back(make_pair(v.back().first + 1, n - sum));
			break;
		}
		v.push_back(make_pair(v.back().first + v[t].second,k));
		sum += v[t].second*k;
		if (k >= v[t].first)
			t++;
	}
	long long ans = 1;
	for (int i = 1; i < v.size(); ++i)
	{
		long long tmp = 1;
		for (long long k = v[i - 1].first + 1; k <= v[i].first; ++k)
			tmp = (tmp * (k%MOD)) % MOD;
		ans = (ans * dnq(tmp, v[i].second)) % MOD;
	}
	printf("%lld\n", ans);
}

Compilation message (stderr)

FG.cpp: In function 'int main()':
FG.cpp:64:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 1; i < v.size(); ++i)
                    ^
FG.cpp:36:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld", &n);
                   ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...