链接:http://codeforces.com/contest/1316/problem/C
题意:
给出两个方程:
输出
中系数不可被k整除的一项,任意一项即可。
例如:
的第一项和第二项的系数5,3都不可被
整除,故输出 1 2皆可
思路:
一开始直接上了一个FFT的模板,很不出意料的WA了。然后开始优化,改错 结束了也并没有写出来。
后来接触了一种解法,找到
的系数中 不可被
整除的最后一项假设为
,然后答案就是
。
后来我稍稍的证明了一下:
设
中,第
项的系数是
因为
是不被
整除的,所以
肯定不会被
整除
同时如果
是系数不可被
整除的最后一项,那么
后面要么没有项数,要么该项的系数是可以被
整除的。*******************************(结论1)
在计算 ,合并同阶时,跟第 项的乘积同阶 的乘积只用两种情况,
因为 (结论1) 可以知道 乘积的系数肯定能够被 整除,再加上 项的系数乘积那么,所得的最后乘积肯定是不会被 整除的。
#include<bitset>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int n,m,k,t,ans1,ans2;
int main(){
scanf("%d %d %d",&n,&m,&k);
for(int i = 0; i < n;++i){
scanf("%d",&t);
if(t%k) ans1 = i;
}
for(int i = 0; i < m;++i){
scanf("%d",&t);
if(t%k) ans2 = i;
}
printf("%d",ans1+ans2);
return 0;
}