首頁>Club>
12
回覆列表
  • 1 # znylf2361

    b=m*mb是int,範圍2^-31到2^31,當m>2^16=65536時,b會溢位,無法正確求解而9376下一個自守數是90625,肯定是求不出來的解決方案:如果不想寫大整數乘法除法,或者呼叫非標準C++中的64位整型,那麼可以藉助數學手段簡化問題原題為求m,使m*m與m關於10^k同餘,其中k是m的位數那麼就有m*m-m可以被10^k整除,即m*(m-1)被2^k*5^k整除,而m與(m-1)互質,則可以知道(2^k整除m&&5^k整除m-1)||(2^k整除m-1&&5^k整除m)程式碼:#include<iostream>usingnamespacestd;intmain(){intm,n;cout<<"請輸入兩個2~200000之間的數"<<endl;cin>>m>>n;intc=1;inte=1,f=1;//修改處intd=0;while(m<=n){while(c<=m)//修改處c=10^k,e=2^k,f=5^k{c=c*10;e=e*2;f=f*5;}if((m%e==0&&(m-1)%f==0)||(m%f==0&&(m-1)%e==0))//修改處{d++;cout<<m<<"";if(d%5==0)cout<<endl;}m++;}cout<<endl;system("pause");return0;}

  • 中秋節和大豐收的關聯?
  • 我老婆產後兩個月左右膝蓋出現時不時疼痛特別是晚上,現在是母乳期,怎麼處理?