当前位置:网站首页>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;
}
边栏推荐
- 论文分享 | ACL2022 | 基于迁移学习的论元关系提取
- 1008 Elevator (20分)
- golang 三种指针类型具体类型的指针、unsafe.Pointer、uintptr作用
- ECCV 2022 Oral | CCPL: 一种通用的关联性保留损失函数实现通用风格迁移
- The use of signal function (signal) in C language
- 【精华文】C语言结构体特殊情况分析:结构体指针 / 基本数据类型指针,指向其他结构体
- 1009 Product of Polynomials C语言多项式乘积(25分)
- x86 Exception Handling and Interrupt Mechanism (1) Overview of the source and handling of interrupts
- 【C language】typedef的使用:结构体、基本数据类型、数组
- 性能测试(01)-jmeter元件-线程组、调试取样器
猜你喜欢

Error: Cannot find module ‘./application‘

ICML 2022 | Out-of-Distribution Detection with Deep Nearest Neighbors

matlab图像分割,从基因芯片荧光图像中提取阴性点(弱)和阳性点(强)

双向链表的各种操作

golang 三种指针类型具体类型的指针、unsafe.Pointer、uintptr作用

Antdv+Asp.net WebApi开发学生信息管理系统(一)

activemq message persistence

华为VRRP+MSTP联动接口检测实验案例

Tensorflow realize parameter adjustment of linear equations

Quartz的理解
随机推荐
x86 Exception Handling and Interrupt Mechanism (1) Overview of the source and handling of interrupts
golang 三种指针类型具体类型的指针、unsafe.Pointer、uintptr作用
electron 应用开发优秀实践
数论知识点
∘(空心的点乘)的数学含义
For versions corresponding to tensorflow and numpy, report FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecate
【C language】typedef的使用:结构体、基本数据类型、数组
margin出bug---margin失效
依赖注入(Dependency Injection)框架是如何实现的
wait system call
CentOS6.5 32bit安装Oracle-11gR2步骤说明
Number theory knowledge
Qt获取EXE可执行文件的上一级目录下的文件
ThreadLocal及其内存泄露分析
Antdv+Asp.net WebApi开发学生信息管理系统(一)
二叉树 前序是根在前(根左右)中序(左根右)
PTA习题 分类统计字符个数(C)
彻底理解工厂模式
Julia资料收集
七夕?程序员不存在的~