AT_arc111_a 题解

洛谷连接&Atcoder 链接

1|0题目简述

给定两个数 nm,输出 10nmmodm 的值。

数据范围:n1018,m104

2|0思路

首先看到数据范围还是很大的,直接快速幂会炸,所以需要一些优化操作。

推理如下:

10nmmodm10nmk×mmodm10nk×m2mmodm10nmodm2mmodm

经过以上推理,可以发现,仅需用快速幂求 10nmodm2 的值即可,时间复杂度 O(logn),可以通过。

其中快速幂的代码可以用循环实现(本人觉得比较好用)。

long long qpow(long long a, long long b, long long p) { long long ans = 1; while(b) { if(b & 1) ans *= (a % p), ans %= p; a = (a * a % p); b /= 2; } return ans; }

解决快速幂后,此题就非常简单了,代码如下:

#include<iostream> using namespace std; long long n, m, ans = 0; long long qpow(long long a, long long b, long long p) { ans = 1; while(b) { if(b & 1) ans *= (a % p), ans %= p; a = (a * a % p); b /= 2; } return ans; } int main() { cin >> n >> m; cout << qpow(10, n, m * m) / m << endl; return 0; }

AC 记录

The end!


__EOF__

本文作者So_noSlack
本文链接https://www.cnblogs.com/So-noSlack/p/17736361.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   So_noSlack  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示