2018年第九届蓝桥杯C/C++省赛A组题解
第一题:
题意:就是求一个,首项为1,等比为1/2的等比数列的前二十项之和
答案:就是(2^20-1)/2^19
第二题:
题意:求整个二十世纪总共有多少个星期一
求解过程:当时灵机一动,打开电脑日历,查看了20世纪第一天是星期一(哈哈),然后算出整个二十世纪有25个闰年,所以总天数就是(365*100+25)/7 = 5217天。
第三题
题意:求解给定的数相乘得到的数末尾有多少个零
求解过程:算出这些数中一共包含多少个2,多少个5,然后取最小值就可以了,答案我记得是31。
第四题
题意:问某个数M是第多少个3,5,7构成的数
求解过程:这个题目跟杭电1058的丑数问题很像。
附上链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058
如果直接采用暴力求解验证的话,是需要花费很长时间的,采用动态规划的思路去进行求解,转移方程为dp[i] = min(dp[p3]*3,dp[p5]*5,dp[p7]*7)。初始时,p3=p5=p7=0,dp[0]=1,
当时我写的代码是这样的:
for(int i=1;i<=2020;i++)