問題を解決しようとしていますが、その一部では (2^n)%1000000007 を計算する必要があり、n<=10^9 です。しかし、次のコードでは、n=99 のような入力に対しても出力 "0" が返されます。
毎回出力を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;
}
}