我想解決一個問題,其中的一部分需要我來計算(2^n)%1000000007,其中n < = 10^9。但是我的下面的代碼給我輸出「0」,即使對於像n = 99這樣的輸入。大量使用pow()
有沒有其他方法,除了有一個循環,每次輸出2倍,每次都找到模(這不是我所期待的,因爲這對大數很慢)。
#include<stdio.h>
#include<math.h>
#include<iostream>
using namespace std;
int main()
{
unsigned long long gaps,total;
while(1)
{
cin>>gaps;
total=(unsigned long long)powf(2,gaps)%1000000007;
cout<<total<<endl;
}
}
這是問了兩天前。 http://stackoverflow.com/questions/12231366/c-c-large-number-calculation比賽?家庭作業? –
我想這是我正在尋找的。我會更新如果這個工程。謝謝 – g4ur4v
是的是的...它的工作!感謝人們的幫助。我喜歡這個網站。 – g4ur4v