输入n, k 取n的前k位和后k位
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll pow(ll x, ll n, ll mod) {
ll ans = 1;
while(n>0) {
if(n&1) {
ans *= x;
ans %= mod;
}
x *= x;
x %= mod;
n >>= 1;
}
return ans;
}
int main() {
int T;
cin >> T;
for(int i=1; i<=T; i++){
ll n, k;
cin >> n >> k;
double x = k*log10(n) - (int)(k*log10(n));//取小数部分
printf("Case %d: %d %03lld\n", i, (int) (pow(10, x)*100), pow(n, k, 1000));
}
return 0;
}
C++位操作与数学算法
本文介绍了一个使用C++实现的算法,该算法能够处理输入整数n的前k位和后k位的计算。通过结合位运算、数学函数和幂运算,此算法展示了如何有效地处理数字的特定部分,并在输出中同时展示这些部分。算法还利用了对数函数来精确地获取数字的小数部分,从而确保计算的准确性。

被折叠的 条评论
为什么被折叠?



