TOJ 2399
1657 ワード
テーマ接続:
http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=2399
テーマのタイプ:
数論-高次同量方程式
データ構造:
テーマはB^L=N(mod p)の方程式を求めてLを解きます。
循環認証を利用する方法
証明:
省略する
ソースコード:
http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=2399
テーマのタイプ:
数論-高次同量方程式
データ構造:
struct LMIC_HASHTABLE
{
int i;
int key[N],
value[N];
void init()
{
for( i = 0; i < N; i ++ )
{
key[i] = -1;
value[i] = -1;
}
}
void insert( int k, int v )
{
int kk = k % N;
while( key[kk] != -1 && key[kk] != k )
{
kk = ( kk + 1 ) % N;
}
key[kk] = k;
value[kk] = v;
}
int find( int k )
{
int kk = k % N;
while( key[kk] != -1 && key[kk] != k )
{
kk = ( kk + 1 ) % N;
}
return value[kk];
}
} ;
考え方の分析:テーマはB^L=N(mod p)の方程式を求めてLを解きます。
循環認証を利用する方法
証明:
省略する
ソースコード:
#include
#include
#include
#include
using namespace std;
#define N 100000
struct hashtable
{
int key[N];
int value[N];
void init()
{
for(int i=0;i=0&&i*m-j>=0) return i*m-j;
y=(1ll*y*xm)%z;
}
return -1;
}
int main()
{
int b,n,p;
while( scanf( "%d%d%d", &p, &b, &n ) != EOF )
{
int ans = baby_giant(b,n,p);
if( ans >= 0 )
{
cout<