我想将一个数字中的每个数字相乘.
例如
515 would become 25(i.e 5*1*5)
10 would become 0(i.e 1*0)
111111 would become 1(i.e 1*1*1*1*1*1)
Run Code Online (Sandbox Code Playgroud)
我用这个代码来做
public static int evalulate(int no)
{
if(no==0)return 0;
int temp=1;
do
{
temp=(no%10)*temp;
no=no/10;
}while(no>0);
return temp;
}
Run Code Online (Sandbox Code Playgroud)
问题是我想评估大约10亿这样的数字
for(int i=0;i<1000000000;i++)evaluate(i);
Run Code Online (Sandbox Code Playgroud)
这需要我的处理器大约146秒.我想在几秒钟内评估它.
那么,是不是可以使用一些优化的代码shift,and,or运营商,这样我可以降低评估时间不使用多线程并行或它
谢谢
如何才能找到仅使用正则表达式的中间字符
例如,这显示了预期的输出
Hello - > l
world - > r
merged- > rg(偶数次发生时见这个)
hi - > hi
I - > I
我试过了
(?<=\w+).(?=\w+)
Run Code Online (Sandbox Code Playgroud) 考虑这个计划
float a = 0.7f;
if (a < 0.7)
{
Console.WriteLine("Less");
}
Run Code Online (Sandbox Code Playgroud)
输出是Less.为什么??
我们可以设置自己buffersize读取文件FileStream.
FileStream fs=new FileStream(path,FileMode,FileAccess,FileShare,1024);
^
Run Code Online (Sandbox Code Playgroud)
那么,BufferedStream如果我们可以FileStream自己设置缓冲区大小,为什么还需要呢.
谢谢
检查整数中是否为0(零)的最佳方法是什么
例如:
505 -> True
555 -> False
44444032 -> True
0000 -> True
Run Code Online (Sandbox Code Playgroud)
我试过这个
public bool has0(int no)
{
if(no==0)return true;
while(no!=0)
{
if(no%10==0)return true;
no=no/10;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,但考虑到我需要在大数字上专门调用此方法10亿次,因此需要特别花费大量时间
for(int i=0;i<1000000000;i++)has0(i);
Run Code Online (Sandbox Code Playgroud)
那么,什么将是检查的最佳方式,如果在一些存在通过使用一些位级运营商如0 |,&,^或任何其他方式.
谢谢..