游游拿到了一个数组,她准备在其中选择两个数,使得乘积的末尾至少有个0。游游想知道,至少有多少种不同的取数方法?

区块链毕设网qklbishe.com为您提供问题的解答

游游拿到了一个数组,她准备在其中选择两个数,使得乘积的末尾至少有游游拿到了一个数组,她准备在其中选择两个数,使得乘积的末尾至少有个0。游游想知道,至少有多少种不同的取数方法?个0。游游想知道,至少有多少种不同的取数方法?

#include <iostream> #include <string> using namespace std; #include<bits/stdc++.h> //pow(2,30)>1e9 //pow(5,20)>1e9 int nums[31][21]; //求一个数末尾有多少个0,即求2和5相等的个数  int main() {   int n, x;   long long res = 0;   cin >> n >> x;   for (int i = 0; i < n; ++i)   {     int a;     scanf("%d", &a);     int x = 0, y = 0;     while (a % 2 == 0)     {       ++x;       a /= 2;     }     while (a % 5 == 0)     {       ++y;       a /= 5;     }     ++nums[x][y];//a由x个2,y个5组成   }   for (int i = 0; i <= 30; ++i)   {     for (int j = 0; j <= 20; ++j)     {       //统计末尾0个数一样的       if (nums[i][j])       {         int k1 = min(i, j);          if (2 * k1 >= x)         {                        res += nums[i][j] * (nums[i][j] - 1);         }       }       else         continue;       for (int i2 = 0; i2 <= 30; ++i2)       {         for (int j2 = 0; j2 <= 20; ++j2)         {           if (i2 == i && j2 == j||nums[i2][j2]==0)continue;           int k2 = min(i2 + i, j2 + j);           if (k2 >= x)           {             res += nums[i][j] * nums[i2][j2];           }         }       }     }   } ////算两遍(a,b) (b,a).所以最后/2   printf("%lld", res / 2);   return 0;  } // 64 位输出请用 printf("%lld")

37:56

以上就是关于问题游游拿到了一个数组,她准备在其中选择两个数,使得乘积的末尾至少有个0。游游想知道,至少有多少种不同的取数方法?的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

从业7年-专注一级市场


微信:btc9767
TELEGRAM :https://t.me/btcok9

具体资料介绍

web3的一级市场千万收益的逻辑


进群点我



qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 游游拿到了一个数组,她准备在其中选择两个数,使得乘积的末尾至少有个0。游游想知道,至少有多少种不同的取数方法?