当前位置:网站首页>PAT1010
PAT1010
2022-08-09 11:09:00 【AlanLiu6】
这个题可太秀了,本来以为是一道水题,结果死活19分。然后网上查了一下代码,结果需要用到二分(黑人问号???干嘛要二分),然后看了一下别人代码里的进制搜索的右边界,竟然是给的数的十进制+1,突然发现自己想当然的把有边界写到了36。然后把36改成了10001,结果真对了23分,知道方向错了后,果断二分。结果一直卡在24分样例10上,我看人家说这个是溢出了,我想我做了溢出判断啊,然后疯狂操作,还是不行。突然看了一下代码,我的mid是用int类型定义的(全code唯一一个int),然后我想也不应该啊,进制数的mid咋可能爆炸呢,除非它给的样例的已知进制的那个数的10进制数爆int才可能啊。但是本着全code一致原则,改了交了,结果对了,这个数据真是绝了。
https://pintia.cn/problem-sets/994805342720868352/problems/994805507225665536
#include<cstdio>
#include<cstring>
typedef long long ll;
ll tag,radix;
ll ans = -1;
char N1[15],N2[15];
ll numTrans(char c)
{
if(c >= '0' && c <= '9') return c - '0';
if(c >= 'a' && c <= 'z') return c - 'a' + 10;
}
ll trans(char* str,ll r)
{
ll sum = 0;
ll flag = 1;
for(ll i = strlen(str)-1;i >= 0;i--,flag*=r)
{
ll temp = flag * numTrans(str[i]);
sum += temp;
if(temp < 0 || sum <0 || flag < 0) return -1;
}
return sum;
}
ll findMax(char *str)
{
ll maxn = 0;
for(ll i = 0;i < strlen(str);i++)
{
if(numTrans(str[i]) > maxn)
maxn = numTrans(str[i]);
}
return maxn;
}
void binSearch()
{
ll sum = 0;
sum = trans(N1,radix);
ll rad = findMax(N2);
ll down = rad +1;
ll top = sum +1;
while(top >= down)
{
ll mid = (top+down)/2;
ll temp = trans(N2,mid);
if(temp >= sum || temp == -1)
{
top = mid - 1;
if(temp == sum)
ans = mid;
}
else
down = mid + 1;
}
}
int main()
{
scanf("%s%s%lld%lld",N1,N2,&tag,&radix);
if(tag == 2)
{
char tt[15];
strcpy(tt,N1);
strcpy(N1,N2);
strcpy(N2,tt);
}
binSearch();
if(ans != -1) printf("%lld\n",ans);
else
printf("Impossible\n");
return 0;
}
边栏推荐
- enum in c language
- bit、byte、KB、M、G、T相互关系
- 1006 Sign In and Sign Out (25分)
- Qt获取EXE可执行文件的上一级目录下的文件
- prometheus接入mysqld_exporter
- C语言统计不同单词数
- golang runtime Caller、Callers、CallersFrames、FuncForPC、Stack作用
- How tall is the B+ tree of the MySQL index?
- Beauty Values
- Solve 1. tensorflow runs using CPU but not GPU 2. GPU version number in tensorflow environment 3. Correspondence between tensorflow and cuda and cudnn versions 4. Check cuda and cudnn versions
猜你喜欢
随机推荐
Quartz分布式实现
x86异常处理与中断机制(3)中断处理过程
支付宝小程序的接入
electron 应用开发优秀实践
x86 Exception Handling and Interrupt Mechanism (3) Interrupt Handling Process
Beauty Values
STemwin中GUI_Exec和GUI_Delay
grpc系列-初探grpc 路由注册和转发实现
1005 Spell It Right (20分)
UNIX哲学
PTA 求一批整数中出现最多的个位数字
golang 三种指针类型具体类型的指针、unsafe.Pointer、uintptr作用
图片查看器viewer
1007 Maximum Subsequence Sum (25分)
TensorFlow: NameError: name 'input_data' is not defined
激光条纹中心提取——Steger
wait系统调用
日期工具类
Solve 1. tensorflow runs using CPU but not GPU 2. GPU version number in tensorflow environment 3. Correspondence between tensorflow and cuda and cudnn versions 4. Check cuda and cudnn versions
Missing URI template variable ‘employeeNumber‘ for method parameter of type String