f(x)%(p^a) (p是素数) 求解
《信息安全数学基础》 陈恭亮
第三章练习题第20题,懒,然后写了个程序,f(x)=x^4+7x+4
2015.10.26
哈哈哈
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
long long int pro(long long int x,long long int y){
long long int ans=1;
for(int i=1;i<=y;i++){
ans=ans*x;
}
return ans;
}
long long int f(long long int x){
return pro(x,4)+7*x+4;
}
long long int fd(long long int x){
return 4*pro(x,3)+7;
}
void exgcd(long long int *a,long long int *b,long long int x,long long int y){
if(y==0){
*a=1;
*b=1;
}
else{
long long int a1,b1;
exgcd(&a1,&b1,y,x%y);
*a=b1;
*b=a1-x/y*b1;
}
return;
}
long long int inv(long long int x,long long int y){
long long int a,b;
exgcd(&a,&b,x,y);
return (a%y+y)%y;
}
int main(){
long long int m=3;
long long int nowm=9;
long long int x=1;
for(int i=1;i<5;i++){
long long int temp1=(-f(x)/(nowm/m)%m+m)%m;
long long int temp3=fd(x);
long long int temp2=inv(temp3,m);
x=temp1*temp2%m*nowm/m+x;
nowm*=m;
//printf("%lld %lld %lld %lld\n",x,temp1,temp2,temp3);
}
printf("%lld\n",x);
}

浙公网安备 33010602011771号