2009-06-28 19:11:29來源不明
Put a banana in your ear!
作法:離散的mod
提供者:teching
在此說明 n&1 為 將n轉成2進位,看最後一位是否為0 簡單的說就是n%2
/********************************************************/
#include<stdio.h>
#include<stdlib.h>
long long int f(int m,int n, int mod){
long long int mul=m;
long long int r=1;
while(n){
if(n&1){r*=mul;r%=mod;}
mul*=mul;
mul%=mod;
n>>=1;
}
return r;
}
main()
{
int n;
while(scanf("%d",&n)==1)
{
if(n<2)
{printf("0\n");continue;}
long long int temp=f(2,n-2,1000000007);
temp=temp*n%1000000007;
temp=temp*(n-1)%1000000007;
printf("%lld\n",temp);
}
return 0;
}