【問題描述】
小a 養了一大坨細胞。
最初小a 只有1 個細胞。每秒,小a 的每個細胞都會**成2 個細胞。
已知:現在離「最初」已經過去了x 秒,那麼現在的細胞數當然是可以計算的。
小a 想知道的當然不是當前的細胞數。小a 知道他養的細胞的習性:每y
個細胞會聚成一團。經常會有剩下的細胞,那麼我們稱這些細胞是孤獨的。
小a 想知道的就是孤獨的細胞個數。
【輸入檔案】
輸入檔案為cell.in。
輸入檔案共一行,為兩個整數x y,以空格隔開。
【輸出檔案】
輸出檔案為cell.out。
輸出檔案共一行,為乙個整數,即孤獨的細胞個數。
【輸入樣例】
3 3
【輸出樣例】
2 【資料規模和約定】
對於10%的資料,x<2^6。
對於20%的資料,x<2^17。
對於40%的資料,x<2^64。
對於70%的資料,x<2^2333。
對於100%的收,0≤x<2^233333,y 是3 到1000 之間(含兩端)的質數
解題思路:顯然2^x%y
but,,x巨大,又因為y是質數,那麼就想到了費馬小定理
(a^p-1)%p=1,,a,p互質。
然後我很愚蠢的用了高精度,而且還是最複雜的那種高精度,,,,
可以讀了一位一位模,也可以用高精度模,然而我減了一遍,乘了一遍,除了一遍。,wtf。。
**
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#ifdef win32
#define auto "%i64d"
#else
#define auto "%lld"
#endif
#define inf 0x3f3f3f3f
#define clock clocks_per_sec
#define cle(x) memset(x,0,sizeof(x))
#define maxcle(x) memset(x,127,sizeof(x))
#define mincle(x) memset(x,-1,sizeof(x))
#define cop(a,x) memcpy(x,a,sizeof(a))
#define frop "cell"
#define c(a,b) next_permutation(a,b)
#define ll long long
#define smin(x,tmp) x=min(x,tmp)
using
namespace
std;
const
int n = 75000;
int y,p;
char s[n];
struct bigint
void readin()
}w[0]=now;
}bigint operator *(const
int b) const
}while(c.w[len])
while(!c.w[len]&&len>1)len--;
return c;
}bigint operator / (const
int b)const
tmp*=m;
}while(!c.w[len]&&len>1)len--;
return c;
}bigint operator - (const bigint &b)const
a.w[i+1]-=borrow;
borrow=0;
}while(!a.w[len]&&len>1)len--;
return a;
}bool
operator
< (const bigint &b) const
bool
operator > (const bigint &b)const
bool
operator >=(const bigint &b)const
bool
operator !=(const bigint &b)const
int kmi(int x)
int main()
其實最後也可以不用快速冪,誒,,,,寫了乙個最複雜的,就當練手高精度吧,。。。。除錯的我也很傷心。
給乙個對拍的**吧,,對拍打法好。,,,膜拜orz
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#ifdef win32
#define auto "%i64d"
#else
#define auto "%lld"
#endif
#define inf 0x3f3f3f3f
#define clock clocks_per_sec
#define cle(x) memset(x,0,sizeof(x))
#define maxcle(x) memset(x,127,sizeof(x))
#define mincle(x) memset(x,-1,sizeof(x))
#define cop(a,x) memcpy(x,a,sizeof(a))
#define frop "cell"
#define c(a,b) next_permutation(a,b)
#define ll long long
#define smin(x,tmp) x=min(x,tmp)
using
namespace
std;
const
int p[200]=;
int main()
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#ifdef win32
#define auto "%i64d"
#else
#define auto "%lld"
#endif
#define inf 0x3f3f3f3f
#define clock clocks_per_sec
#define cle(x) memset(x,0,sizeof(x))
#define maxcle(x) memset(x,127,sizeof(x))
#define mincle(x) memset(x,-1,sizeof(x))
#define cop(a,x) memcpy(x,a,sizeof(a))
#define frop "std"
#define c(a,b) next_permutation(a,b)
#define ll long long
#define smin(x,tmp) x=min(x,tmp)
using
namespace
std;
ll x;
int p;
int kmi(ll x)
int main()
哦,,我之前生成質數的那個都寫錯了,,,
。。。誒。。。。。。。。調了好久
費馬大定理與費馬小定理
費馬大定理,又被稱為 費馬最後的定理 由17世紀法國數學家皮耶 德 費瑪提出。他斷言當整數n 2時,關於x,y,z的方程 xn yn zn 沒有正整數解。德國佛爾夫斯克曾宣布以10萬馬克作為獎金獎給在他逝世後一百年內,第乙個證明該定理的人,吸引了不少人嘗試並遞交他們的 證明 被提出後,經歷多人猜想辯...
費馬小定理
選自 數論妙趣 數學女王的盛情款待 第六章 開門咒 數論中充斥著許多易於觀察到的事實,誘使人們用普通歸納推理的辦法去進行推廣。對此,必須慎之又慎,以免誤入陷阱。設想你偶而把 2自乘7次,再減去2,得2 7 2 126,隨後發現,126恰好能被2的冪指數7整除。接著又發現,25 2 30,30也能被2...
費馬小定理
費馬小定理 在較短時間內計算 a n p n極大 推倒 費馬小定律的描述,若a,p互質,則 a p 1 p 1 若不互質,則a p p a a,p互質,設n p 1 j餘n p 1 則 a n p a n p 1 p 1 j p a n p 1 a p 1 j p a n p 1 p a p 1 p...