标签:数学
2 10 19
Case #1: 0 Case #2: 1Hint10 shown in hexadecimal number system is another letter different from ‘0’-‘9’, we can represent it as ‘A’, and you can extend to other cases.
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef __int64 LL;
LL Max(LL a, LL b, LL c)
{
return max(a, max(b, c));
}
int main()
{
int T, cas = 0;
LL n, i, j, k, a, b, c, delta, x, t;
scanf("%d",&T);
while(T--) {
LL ans = 0;
scanf("%I64d",&n);
printf("Case #%d: ", ++cas);
if(n >= 3 && n <= 6) {
printf("-1\n");
continue;
}
// n = j * x + i, x > max(i, j), 转化后只有2位数
for(i = 3; i <= 6; i++) {
for(j = 3; j <= 6; j++) {
if((n - i) % j == 0 && (n - i) / j > max(i, j))
ans++;
}
}
// n = i * x * x + j * x + k, 转化后只有3位数
for(i = 3; i <= 6; i++) {
for(j = 3; j <= 6; j++) {
for(k = 3; k <= 6; k++) {
a = i; b = j; c = k - n;
delta = (LL)sqrt(b * b - 4 * a * c + 0.5);
if(delta * delta != (b * b - 4 * a * c)) continue;
if((delta - b) % (2 * a)) continue; //负根直接舍弃
x = (delta - b) / (2 * a);
if(x > Max(i, j, k))
ans++;
}
}
}
//其他情况
for(i = 4; i * i * i <= n; i++) {
t = n;
while(t) {
if(t % i < 3 || t % i > 6)
break;
t = t / i;
}
if(!t) ans++;
}
printf("%I64d\n", ans);
}
return 0;
}hdu 4937 Lucky Number(数学题 进制转换)2014多校训练第7场,布布扣,bubuko.com
hdu 4937 Lucky Number(数学题 进制转换)2014多校训练第7场
标签:数学
原文地址:http://blog.csdn.net/lyhvoyage/article/details/38532471