2022 CSP-J第二轮一二题
1. 乘方(pow)
题解代码:
#include <stdio.h>
#include <math.h>
int main() {
freopen("pow.in", "r", stdin);
freopen("pow.ans", "w", stdout);
int a = 0, b = 0;
long long cf = 0, jx = 0;
scanf("%d %d", &a, &b);
cf = pow(a, b);
jx = pow(10, 9);
if ((cf <= jx) && (cf > 0)) {
printf("%lld", cf);
} else {
printf("-1");
}
return 0;
}
- 解密(decode)
题解代码:
#include <stdio.h>
#include <math.h>
int a[100005][3];
int main() {
freopen("decode.in", "r", stdin);
freopen("decode.ans", "w", stdout);
long long b = 0, ch = 0, q = 0;
int k;
int flage;
scanf("%d", &k);
for (int i = 0; i < k; i++) {
scanf("%d%d%d", &a[i][0], &a[i][1], &a[i][2]);
}
for (int i = 0; i < k; i++) {
ch = a[i][0];
flage = 0;
b = a[i][1] * a[i][2];
for (long long j = 2; j <= sqrt(ch); j++) {
if (ch % j == 0) {
q = ch / j;
if (b == (j - 1) * (q - 1) + 1) {
printf("%lld %lld\n", j, q);
flage = 1;
}
}
}
if (flage == 0) {
printf("NO\n");
}
}
return 0;
}
洛谷自测超时3个测试点,暂时想不到怎么改进,有更好的方法欢迎评论区留言讨论。