1.1e9+7是小於2^31/2的一個素數,防int爆。
2.
if (a[n_c] == 'N'
&&a[n_c + 1] == 'I'
&&a[n_c + 2] == 'C')
{
temp = nic;
nic*= 2;
nic = nic%MOD;
nic = nic + temp + 3;
nic = nic%MOD;
}
有效防爆。
#include <stdio.h>
#define MAX 1000000
#define MOD 1000000007
int main()
{
char a[MAX+5];
int t;
int n_t;
int n_c;
int nic;
int temp;
scanf("%d\n", &t);
for (n_t = 0; n_t < t; n_t++)
{
nic = 0;
gets(a);
for (n_c = 0; a[n_c+2]!='\0'; n_c++)
{
if (a[n_c] == 'N'
&&a[n_c + 1] == 'I'
&&a[n_c + 2] == 'C')
{
temp = nic;
nic*= 2;
nic = nic%MOD;
nic = nic + temp + 3;
nic = nic%MOD;
}
}
printf("%d\n", nic);
}
return 0;
}