c语言题求助
发表时间:2024-07-21 05:45:59
来源:网友投稿
这道题中n的最大取值为10⁹,所以直接遍历依次判断再求和会超时
注意到1~n所有数的和容易求得,为sum=n(n+1)/2
可以采用容斥原理,即先求出总体的和sum
减去其中所有a的倍数的和suma和b的倍数的和sumb
再加上所有同时能被a和b整除的数的和sumab即可
1~n中能被a整除的最大数为[n/a]*a,能被b整除的最大数为[n/b]*b([]表示下取整)
又a和b互质,所以能同时被a和b整除的数为[n/(a*b)]*(a*b)
再通过求和公式就可以直接计算出suma、sumb和sumab
具体代码如下:
#include
typedeflonglongintll;//定义长整型别名为ll,防止溢出
intmain(){
intn,a,b;
scanf(%d%d%d,&n,&a,&b);
llsum=(ll)n*(n+1)/2;//1~n所有数之和
intka=n/a,kb=n/b,kab=n/(a*b);
llsuma=(ll)a*ka*(ka+1)/2;//a的倍数之和
llsumb=(ll)b*kb*(kb+1)/2;//b的倍数之和
llsumab=(ll)a*b*kab*(kab+1)/2;//ab的倍数之和
printf(%lld\n,sum-suma-sumb+sumab);
return0;
}
运行结果如下:
符合示例输出,望采纳~
免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
相关资讯
汽修专业新疆怎么找工作
2025-04-06
机械专业专长怎么写简历
2025-04-06
专科怎么报审计专业的
2025-04-06
专业学科导师类别怎么填
2025-04-06
查报考专业网站怎么查
2025-04-06
水电专业规划怎么写简历
2025-04-06
表演专业怎么留学的好呢
2025-04-06
专业防雷检测怎么收费的
2025-04-06
怎么查询同等学力专业
2025-04-06
高考技能专业怎么选择的
2025-04-06
钢筋套筒专业名称怎么写
2025-04-06
中专怎么填高考志愿专业
2025-04-06
中专统招怎么报志愿专业
2025-04-06
师范专业自我评价怎么写
2025-04-06
景观建筑换专业怎么换好
2025-04-06
建筑专业学生简历怎么写
2025-04-06
推荐资讯
怎样在高中成绩出众
2024-07-17 02:17:56
超声波育种原理
2024-07-28 10:50:52
赠人玫瑰手有余香有什么含义
2024-07-28 14:04:23
省字组词
2024-07-30 09:03:32
北镇到底是不是满族自治县啊
2024-07-31 14:53:29
气体灭火系统启动顺序
2024-08-16 12:37:08
存款利息税怎么计算
2024-08-18 21:05:48
粉扑怎么清洗什么是粉扑
2024-10-09 11:15:41
雪如意跳台建在哪里
2024-10-17 17:46:35
2024最新综合文秘工作总结
2024-11-15 13:30:03
新励学网教育平台
海量全面 · 详细解读 · 快捷可靠
累积科普文章数:18,862,126篇
热门关注