首页 > 其他分享 >乘积尾零 612

乘积尾零 612

时间:2024-02-29 23:37:32浏览次数:17  
标签:10 cnt 乘积 612 sum 5510 9073

如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?
5650 4542 3554 473 946 4114 3871 9073 90 4329
2758 7949 6113 5659 5245 7432 3051 4434 6704 3594
9937 1173 6866 3397 4759 7557 3070 2287 1453 9899
1486 5722 3135 1170 4014 5510 5120 729 2880 9019
2049 698 4582 4346 4427 646 9742 7340 1230 7683
5693 7015 6887 7381 4172 4341 2909 2027 7355 5649
6701 6645 1671 5978 2704 9926 295 3125 3878 6785
2066 4247 4800 1578 6652 4616 1113 6205 3264 2915
3966 5291 2904 1285 2193 1428 2265 8730 9436 7074
689 5510 8243 6114 337 4096 8199 7313 3685 211

使用字符串切片或者整除来移动位数

import os
import sys

# 请在此输入您的代码
nums = '''5650 4542 3554 473 946 4114 3871 9073 90 4329 
2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 
9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 
1486 5722 3135 1170 4014 5510 5120 729 2880 9019 
2049 698 4582 4346 4427 646 9742 7340 1230 7683 
5693 7015 6887 7381 4172 4341 2909 2027 7355 5649 
6701 6645 1671 5978 2704 9926 295 3125 3878 6785 
2066 4247 4800 1578 6652 4616 1113 6205 3264 2915 
3966 5291 2904 1285 2193 1428 2265 8730 9436 7074 
689 5510 8243 6114 337 4096 8199 7313 3685 211 '''.split()
sum = 1
cnt = 0
for num in nums:
    sum *= int(num) # 所有数字相乘
while (sum % 10 == 0): # 如果能被整除,说明末尾为0
    sum = sum // 10 # 移动位数
    cnt += 1 # 结果加一
print(cnt)

字符串切片

sum = str(sum)[::-1] # 倒序存放
for i in range(len(sum)):
  if sum[i] == '0':
    cnt += 1
  else:
    break # 如果不是说明没有零了
print(cnt)


i = 0
while(sum[i] == '0'):
    cnt += 1
    i+=1

标签:10,cnt,乘积,612,sum,5510,9073
From: https://www.cnblogs.com/codingsaveWorld/p/18045882

相关文章

  • 洛谷题单指南-递推与递归-P3612 [USACO17JAN] Secret Cow Code S
    原题链接:https://www.luogu.com.cn/problem/P3612题意解读:字符串加长的时候,是先把最后一个字符接上,再拼接其余字符,注意不是翻转,要找第n个字符,就要看字符串加长几次后长度能超过n,然后在加长后的字符串中找第n个字符。解题思路:如果直接通过模拟法,字符串长度太长,且要找的第n个数......
  • 1339. 分裂二叉树的最大乘积
    这道题关键突破点就是先算出节点总和,然后找到一颗子树总和最接近总和的一半。乘积最大基本就是先要求总和,然后找到最接近总和一半。关键就是这一步,找到最适合子树的和。点击查看代码if(abs(2*cur-sum)<abs(2*best-sum)){best=cur;}完整代码:点击查看......
  • F. 乘积最大(题解)
    题目今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度为......
  • 乘积小于k的子数组
    问题描述:给定一个正整数数组nums。找出该数组内乘积小于k的连续的子数组的个数。示例1:输入:nums=[10,5,2,6],k=100输出:8解释:8个乘积小于100的子数组分别为:[10],[5],[2],[6],[10,5],[5,2],[2,6],[5,2,6]。需要注意的是[10,5,2]并不是乘积小于100的......
  • P9612 [CERC2019] Light Emitting Hindenburg 题解
    题目传送门题目大意这个题目简化一下就是求\(n\)个数中取\(k\)个数按位与的最大值思路很容易想到贪心。题中说道输入的数在二进制下最多\(29\)位,所以我们从\(29\)开始遍历二进制位,如果当前位有大于等于\(k\)个\(1\),那么标记一下这些数,可以发现剩下的比当前位低的......
  • Luogu P1249 最大乘积
    最大乘积题目描述一个正整数一般可以分为几个互不相同的自然数的和,如\(3=1+2\),\(4=1+3\),\(5=1+4=2+3\),\(6=1+5=2+4\)。现在你的任务是将指定的正整数\(n\)分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。输入格式只一个正整数\(n\),(\(3\leqn\leq10000\))。......
  • 洛谷题单指南-模拟和高精度-P1249 最大乘积
    原题链接:https://www.luogu.com.cn/problem/P1249题意解读:题目分两步,第一步是将整数拆分成不同自然数的和,第二步通过高精度计算这些因数的乘积,要使乘积最大,需要某种贪心思想。解题思路:如何保证整数拆分后因子的乘积最大呢,有几个原则:1、最好不要包括因子1,但3、4除外,需要进行特......
  • 238.除自身以外数组的乘积
    1.题目介绍给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32位整数范围内。请不要使用除法,且在O(n)时间复杂度内完成此题。示例1:输入:nu......
  • CF1612G Max Sum Array
    MaxSumArrayLuoguCF1612G题面描述给定一个长为\(m\)的序列\(c_1,c_2,\dots,c_m\)。序列\(A\)满足:对于所有\(1\leqi\leqm\),\(i\)在\(A\)中出现了\(c_i\)次。定义一个序列\(A\)的值如下:\[f(A)=\sum_{1\leqi<j\leqn,a_i=a_j}j-i\]求满足条件的\(f......
  • [刷题技巧] LeetCode238. 除自身以外数组的乘积
    题目描述思路:前缀/后缀乘积数组构造除自身以外数组的左边前缀乘积构造除自身以外数组的右边后缀乘积然后对应位置相乘方法一:classSolution{publicint[]productExceptSelf(int[]nums){intn=nums.length;//前缀乘积数组:leftProduct[i]表......