专栏文章
月夜飒飒动干戈 --- DYOI系列题解
算法·理论参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miof8xkr
- 此快照首次捕获于
- 2025/12/02 18:14 3 个月前
- 此快照最后确认于
- 2025/12/02 18:14 3 个月前
简略题意:求出所有的 使 。
由于 的范围极小,只需要枚举 个数字,所以暴力检查每一个 是否符合要求;计算部分使用带模的快速幂并只取出个位数即可。
快速幂如下:
CPPinline ll qpow(ll a, ll b, ll mod) {
ll ret = 1;
while(b > 0) {
if(b & 1) {
ret *= a, ret %= mod;
}
a *= a, a %= mod;
b >>= 1;
}
return ret;
}
枚举部分如下
CPPfor(ll i = p; i <= p + 9; ++i) {
if(qpow(k, i, 10) == x) {
ans[tot++] = i;
}
}
最后的统计与存储过于简单不放代码了。
总代码:
CPP#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;
ll ans[13];
inline ll qpow(ll a, ll b, ll mod) {
ll ret = 1;
while(b > 0) {
if(b & 1) {
ret *= a, ret %= mod;
}
a *= a, a %= mod;
b >>= 1;
}
return ret;
}
int main() {
ll T;
cin >> T;
while(T--) {
ll k, p, x;
cin >> k >> p >> x;
ll tot = 0;
k %= 10;
for(ll i = p; i <= p + 9; ++i) {
if(qpow(k, i, 10) == x) {
ans[tot++] = i;
}
}
if(tot == 0) {
cout << "No Ans" << endl;
} else {
cout << tot << endl;
for(ll i = 0; i < tot; ++i) {
cout << ans[i] << ' ';
}
cout << endl;
}
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...