当前位置: 首页 > news >正文

idol!! 2023牛客暑期多校训练营6 C

登录—专业IT笔试面试备考平台_牛客网

题目大意:·定义n!!等于与n的奇偶性相同的所有小于等于n的数的阶乘之和,问n!!的末尾有多少0

1<=n<=1e18

思路:因为末尾0的来源是2*5,而2的个数明显比5的个数多得多,所以末尾0的个数就等于有多少个5相乘。

首先我们看所有奇数,在n的范围内有cnt1=(n+1)/2个奇数,然后我们观察发现,除了前两个奇数1,3之外,后面每5个数他们的因数中间包含的5的个数是相同的,比如5~13每个奇数都有一个因数5,15~23有两个,而25~33有4个35~43有5个,前两组和后两组5的个数都相差1,而两者之间相差2,这是因为25不仅有因数5,还有因数25额外提供了一个5,那么如果我们先不管额外提供的这个5,那么每一组5的个数都是等差数列,一共有cnt2=(cnt-1)/5组,每组大小s为5,那么总合也就是(1+cnt2)*s*cnt2/2。

然后所有数对应减去他们本次提供的贡献后,可以发现前两组数剩余5的个数都变成了0,下一组变成了25~73的个数为1,75~123的个数为2,125~173的个数为4,也就是新的等差数列的每组大小变成了a*5,其余都不变,所以我们可以从5开始枚举a,直到所有数的贡献都被计算完毕。

对于偶数,唯一的不同就是一开始前四个数的贡献为0,每次求等差数列后,前四组的贡献清零,分两次求奇偶再加起来就好

//#include<__msvc_all_public_headers.hpp>
#include<bits/stdc++.h>
using namespace std;
typedef __int128 ll;//答案超过了long long 的数据范围
ll read()
{//直接在函数里面实现读字符串操作更简洁ll res = 0;//初始结果赋值0char scan[1005];scanf("%s", scan);for (int i = 0; i < strlen(scan); i++)res *= 10, res += scan[i] - '0';//实现进位return res;//返回__int128类型
}
void print(ll num)
{//递归调用,实现从高位向低位输出if (num > 9)print(num / 10);putchar(num % 10 + '0');
}
int main()
{ll n = read();ll a = 1;ll ans = 0;ll cnt1 = (n + 1) / 2;//奇数的个数while (cnt1>0){a *= 5;//每组大小ll cnt2 = (cnt1 - 2) / a;//组数ll sum1 = (1 + cnt2) * a * cnt2 / 2;//求等差数列和ll mod = (cnt1 - 2) % a;//不在组里的余数sum1 += (cnt2 + 1) * mod;//单独算一下余数ans += sum1;cnt1 -= 2 * a;//维护剩余有攻陷的数的个数}if (ans < 0){//特判cnt=1print(0);return 0;}a = 1;cnt1 = n / 2;//偶数的的个数while (cnt1>0){a *= 5;ll cnt2 = (cnt1 - 4) / a;//前四组贡献为0ll sum1 = (1 + cnt2) * a * cnt2 / 2;ll mod = (cnt1 - 4) % a;sum1 += (cnt2 + 1) * mod;ans += sum1;cnt1 -= 4 * a;}if (ans < 0){//特判cnt1=1,2,3print(0);return 0;}print(ans);return 0;
}

http://www.lryc.cn/news/116257.html

相关文章:

  • 深入理解Jdk5引入的Java泛型:类型安全与灵活性并存
  • idea在控制台中输出文字显示乱码
  • hacksudo3 通关详解
  • CentOS 虚拟机磁盘扩容(非常实用)
  • docker案例复现
  • 淘宝资源采集(从零开始学习淘宝数据爬取)
  • 【C语言】预处理详解
  • 2023中国(合肥)场景创新峰会成功举办,全息网御被纳入《合肥市第二批场景能力清单》
  • QT QLCDNumber 使用详解
  • 明年,HarmonyOS不再兼容Android应用!
  • 华为OD机试 - 人气最高的店铺(Java JS Python)
  • mysql sql 语句sum求和嵌套数学表达式
  • Java课题笔记~ Servlet编程
  • 修改IDEA的idea.vmoptions参数导致IDEA无法打开(ReservedCodeCacheSize)
  • P1321 单词覆盖还原
  • GODOT游戏引擎简介,包含与unity性能对比测试,以及选型建议
  • Add-in Express for Microsoft Office and Delphi Crack
  • opencv基础-34 图像平滑处理-2D 卷积 cv2.filter2D()
  • webSocket 与传统的 http 有什么优势
  • 如何测试Linux磁盘的读写速度
  • Spring Data Redis:在Java中操作Redis
  • Android 面试重点之Framework (Handler篇)
  • 基于Node.js的后台管理系统的数据表格导出下载
  • 渗透攻击方法:原型链污染
  • 第四章 kernel函数基础篇
  • JVM:运行时数据区域(白话文)
  • Go语言并发编程(千锋教育)
  • CSS革命:用Sass/SCSS引领前端创新
  • MAPPO 算法的深度解析与应用和实现
  • API接口的涉及思路以及部分代码