设 z=¬[(¬p∧q)∨(q⊕p→q)]⇔[(p∧¬q)∧(q⊕p∨q)∨p]∨p
,且 pq=1 。
现在给两个整数 n 和 k ,求下面算式的值:
∑i=12nk+(∏l=12k)+n21∑i=1(n+k)2(∏j=1kj×zn)(mod 109+7)
再给出一个九位数 p ,如果如果它的前 i 位都能被 i 整除的话,那么就将式子乘 2 再输出 。
我的代码:
#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
long long n, k, p, ans, ind = 8, temp;
int num[10];
bool can = true;
char ch[1700];
long long f(long long n){
long long ans = 1;
for (long long i=2; i<=n; i++) ans = (ans * i) % MOD;
return ans % MOD;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> ch >> k >> p;
ans = f(k);
while (p){
num[ind--] = p%10;
p /= 10;
}
for (int i=0; i<9; i++){
temp = temp * 10 + num[i];
if (temp % (i+1)){
can = false;
break;
}
}
if (can) ans <<= 1;
cout << ans % MOD;
return 0;
}