Submission #24003726
Source Code Expand
#include <bits/stdc++.h>
#define ll long long
#define INF 1000000005
#define MOD 1000000007
#define EPS 1e-10
#define rep(i,n) for(int i=0;i<(int)n;++i)
#define each(a,b) for(auto (a): (b))
#define all(v) (v).begin(),(v).end()
#define zip(v) sort(all(v)),v.erase(unique(all(v)),v.end())
#define fi first
#define se second
#define pb push_back
#define show(x) cout<<#x<<" = "<<(x)<<endl
#define spair(p) cout<<#p<<": "<<p.fi<<" "<<p.se<<endl
#define svec(v) cout<<#v<<":";rep(kbrni,v.size())cout<<" "<<v[kbrni];cout<<endl
#define sset(s) cout<<#s<<":";each(kbrni,s)cout<<" "<<kbrni;cout<<endl
#define smap(m) cout<<#m<<":";each(kbrni,m)cout<<" {"<<kbrni.first<<":"<<kbrni.second<<"}";cout<<endl
using namespace std;
typedef pair<int,int>P;
#define MAX_N 100005
#define MOD 1000000007
unsigned inv[MAX_N], fac[MAX_N], finv[MAX_N];
unsigned int add(unsigned int x, unsigned int y){
return (x + y >= MOD) ? (x + y - MOD) : (x + y);
}
unsigned int sub(unsigned int x, unsigned int y){
return (x < y) ? (x + MOD - y) : (x - y);
}
unsigned int mul(unsigned int x, unsigned int y){
return (unsigned long long)x * y % MOD;
}
void make()
{
fac[0] = fac[1] = 1;
finv[0] = finv[1] = 1;
inv[1] = 1;
for(int i = 2; i < MAX_N; ++i){
inv[i] = MOD - mul(inv[MOD % i], (MOD / i));
fac[i] = mul(fac[i - 1], i);
finv[i] = mul(finv[i - 1], inv[i]);
}
}
// solve() を呼び出す前に必ず make() を行っておく!!
// deg + 1 個の f(i) = val[i] (i = 0,..., deg) の情報から関数 f を復元し, f(num) を返す
// すべて MOD を法として考えていることに注意
unsigned int solve(int deg, long long num, vector<int>& val)
{
if((num %= MOD) < 0) num += MOD;
if(num <= deg) return val[num];
unsigned int ue = 1;
vector<unsigned int> lf(deg + 2), rg(deg + 2);
lf[0] = rg[deg + 1] = 1;
for(int i = deg; i >= 0; --i){
rg[i] = mul(rg[i + 1], num - i);
}
unsigned int ans = 0;
for(int i = 0; i <= deg; ++i){
unsigned int r = mul(finv[deg-i], finv[i]);
if((deg - i) % 2) r = MOD - r;
ans = add(ans, mul(mul(lf[i], rg[i + 1]), mul(r, val[i])));
lf[i + 1] = mul(lf[i], num - i);
}
return ans;
}
int main()
{
cin.tie(0);
ios::sync_with_stdio(false);
int n;
cin >> n;
vector<int> vec(n+1);
rep(i,n+1){
cin >> vec[i];
}
ll T;
cin >> T;
make();
cout << solve(n, T, vec) << "\n";
return 0;
}
Submission Info
Submission Time
2021-07-05 14:57:08+0900
Task
D - 見たことのない多項式
User
kopricky
Language
C++ (GCC 9.2.1)
Score
100
Code Size
2582 Byte
Status
AC
Exec Time
28 ms
Memory
5516 KiB
Compile Error
./Main.cpp: In function ‘unsigned int solve(int, long long int, std::vector<int>&)’:
./Main.cpp:59:18: warning: unused variable ‘ue’ [-Wunused-variable]
59 | unsigned int ue = 1;
| ^~
Judge Result
Set Name
Sample
Subtask1
Subtask2
Subtask3
Score / Max Score
0 / 0
40 / 40
40 / 40
20 / 20
Status
Set Name
Test Cases
Sample
sample_01.txt, sample_02.txt
Subtask1
sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt
Subtask2
sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt
Subtask3
sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask3_01.txt, subtask3_02.txt, subtask3_03.txt, subtask3_04.txt, subtask3_05.txt, subtask3_06.txt, subtask3_07.txt
Case Name
Status
Exec Time
Memory
sample_01.txt
AC
9 ms
4660 KiB
sample_02.txt
AC
8 ms
4736 KiB
subtask1_01.txt
AC
8 ms
4660 KiB
subtask1_02.txt
AC
5 ms
4604 KiB
subtask1_03.txt
AC
8 ms
4776 KiB
subtask1_04.txt
AC
7 ms
4792 KiB
subtask1_05.txt
AC
8 ms
4772 KiB
subtask1_06.txt
AC
6 ms
4772 KiB
subtask1_07.txt
AC
6 ms
4708 KiB
subtask1_08.txt
AC
5 ms
4612 KiB
subtask1_09.txt
AC
8 ms
4728 KiB
subtask2_01.txt
AC
7 ms
4724 KiB
subtask2_02.txt
AC
9 ms
4732 KiB
subtask2_03.txt
AC
5 ms
4828 KiB
subtask2_04.txt
AC
5 ms
4780 KiB
subtask2_05.txt
AC
5 ms
4804 KiB
subtask2_06.txt
AC
6 ms
4744 KiB
subtask2_07.txt
AC
8 ms
4752 KiB
subtask2_08.txt
AC
5 ms
4772 KiB
subtask3_01.txt
AC
6 ms
4808 KiB
subtask3_02.txt
AC
24 ms
5492 KiB
subtask3_03.txt
AC
12 ms
4920 KiB
subtask3_04.txt
AC
12 ms
4784 KiB
subtask3_05.txt
AC
28 ms
5496 KiB
subtask3_06.txt
AC
13 ms
5516 KiB
subtask3_07.txt
AC
18 ms
5500 KiB