第6天,这位老师自称自己最差,可却是我听下来最懂的。,
1;其实只需求出(a+b)的n-1次方。然后再在二分,在每次乘在除余。、
2:只要字符串输入输出,用吗sort
3:#include <cmath>
#include <ctime>
#include <iostream>
using namespace std;
int m, k, n;
long long f(long long n, long long a, long long b)
{
long long res = 0;
long long l = ceil((double)n / a), r = ceil((double)n / b);
if (l == r) {
res += l * (b - a + 1);
} else {
long long mid = (a + b) >> 1;
res += f(n, a, mid) + f(n, mid + 1, b);
}
return res;
}
int main()
{
freopen("c.in", "r", stdin);
freopen("c.out", "w", stdout);
cin >> n >> k >> m;
cout << f(m, n - k + 1, n) << endl;
fclose(stdin);
fclose(stdout);
}
4.
#include <iostream>
using namespace std;
long long n, ans = 1;
long long power(long long a, long long b, long long p)
{
long long res = 1;
for (long long i = 1, x = a; i <= b; i <<= 1) {
if (i & b) {
res *= x;
res %= p;
}
x *= x;
x %= p;
}
return res;
}
int main()
{
freopen("pi.in", "r", stdin);
freopen("pi.out", "w", stdout);
cin >> n;
if (n % 3 == 1) {
if (n >= 4) {
ans *= power(3, (n - 4) / 3, 10000007);
ans *= 4;
ans %= 10000007;
} else {
ans = 1;
}
} else {
ans *= power(3, n / 3, 10000007);
if (n % 3 != 0)
ans *= n % 3;
ans %= 10000007;
if (n == 0)
ans = 0;
}
cout << ans << endl;
fclose(stdin);
fclose(stdout);
}