Every day a leetcode
题目来源:1175. 质数排列
解法:判断质数+阶乘
方案总数=质数的全排列数(阶乘)* 非质数的全排列数(阶乘)
代码:
#define MOD 1000000007
bool isprime(int x)
{
if (x<=1) return false;
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0) return false;
}
return true;
}
long factorial(int n)
{
if (n<=1) return 1;
else return n*factorial(n-1)%MOD;
}
int numPrimeArrangements(int n){
int prime=0;
for (int i=1;i<=n;i++)
{
if(isprime(i)) prime++;
}
return factorial(prime)*factorial(n-prime)%MOD;
}
}
结果:
小疑问:1000000007 vs 1e9+7
若把
#define MOD 1000000007
修改为:
#define MOD 1e9+7
会报错。
请知道的大神在评论区指点。
解答
typeid 函数能给出一个变量的数据类型。
可以看出1e9+7是double,1000000007是int,问题就出在这个double身上,int就没问题。
注:编译器不同,直接打印typeid().name()的输出不同。
有的编译器打印的是数据类型首字母,有的则打印全。