求助|蓝桥杯周赛的一道题
1115
2024.03.23
2024.03.24
发布于 未知归属地

各位大佬们,这是蓝桥杯周赛的一道题,我的思路是用快速幂处理,但是只能过6/10个案例,请问有什么办法能优化我的代码,或者有其他的解题思路吗?
屏幕截图 2024-03-24 022350.png
屏幕截图 2024-03-24 022709.png
屏幕截图 2024-03-24 022713.png
这是我的代码

#include<bits/stdc++.h>
using namespace std;
long long p = 1000000007;
long long ans = 0;
void qpow(long long base,long long power){
  long long int result = 1;
		while (power > 0)
		{
			if (power & 1)
				result = result * base % p;
			base = base * base % p;     						
			power >>= 1;
		}
		ans += result % p;
		ans %= p;
}
void get_divisors(long long n, long long power) {
	for (long long i = 1;i <= n / i;i++) {
		if (n % i == 0) {
			qpow(i,power);
			if (n / i != i) 
      qpow(n/i,power);
		}
	}
}
int main()
{
  ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int t;
	cin >> t;
	for (int i = 0;i < t;i++)
	{
		long long n, k;
    ans=0;
		cin >> n >> k;
		get_divisors(n, k);
		cout << ans << endl;
	}
	return 0;
}
评论 (8)