假设我有以下代码来循环数字,如下所示:
int p;
cin>>p;
for(unsigned long long int i=3*pow(10,p);i<6*pow(10,p);i++){
//some code goes here
}
现在,根据某些条件检查,我需要i
在范围之间打印一个:3*pow(10,p)<= i <6*pow(10,p)
代码工作正常upto p=8
,然后变得非常缓慢,编译器似乎卡住了p=9,10,11
。我猜问题在于使用正确的数据类型。这里应该使用什么正确的数据类型?
此循环的目的是在范围之间找到合适的数字。体面数字的条件如下: 1) 3、5 或两者都作为其数字。不允许使用其他数字。2) 3 出现的次数能被 5 整除。 3) 5 出现的次数能被 3 整除。
注意:我unsigned long long int
在这里使用过(0 to 18,446,744,073,709,551,615)
。我在32 位机器上运行。