ZJU-PAT 1010. Radix (25)

UE4打包为Framework库嵌入iOS原生工程 阅读详情

Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is "yes", if 6 is a decimal number and 110 is a binary number.

Now for any pair of positive integers N1 and N2, your task is to find the radix of one number while that of the other is given.

Input Specification:

Each input file contains one test case. Each case occupies a line which contains 4 positive integers:
N1 N2 tag radix
Here N1 and N2 each has no more than 10 digits. A digit is less than its radix and is chosen from the set {0-9, a-z} where 0-9 represent the decimal numbers 0-9, and a-z represent the decimal numbers 10-35. The last number "radix" is the radix of N1 if "tag" is 1, or of N2 if "tag" is 2.

Output Specification:

For each test case, print in one line the radix of the other number so that the equation N1 = N2 is true. If the equation is impossible, print "Impossible". If the solution is not unique, output the smallest possible radix.

Sample Input 1:
6 110 1 10
Sample Output 1:
2
Sample Input 2:
1 ab 1 2
Sample Output 2:
Impossible
[注意]
1.数据类型选择:输入10位数结合进制可得应选long long int,在某些情况下radix较大故也应该设置为long long int
2.算法选择:简单顺序遍历超时,根据数值随着进制单调增加考虑使用二分查找(下界选max(s[i])+1, 上界选max(s[tag]-->longint,下界))例子:11 b 1 10
3.算法优化剪枝:(1)当两个数均为1,输出2;(2)当两数相等但不为1时,输出radix (3)计算某进制对应的数时累计和超过num1即可返回结果。
#pragma warning (disable:4786)
#include<iostream>
#include<iomanip>
#include<string>
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;

string a[3];
int tag,radix;

long long int tolongint(string s,int dig)
{
    long long int ans=0;
    long long int d=1;
    for(int i=s.size()-1;i>=0;i--)
    {
        int num;
        if(s[i]>='0' && s[i]<='9') num=s[i]-'0';
        else num=s[i]-'a'+10;

        ans=ans+num*d;
        d*=dig;
    }
    return ans;
}

int Maxnum(string s)
{
    int d=-1;
    for(int i=0;i<s.size();i++)
    {
        int num;
        if(s[i]>='0' && s[i]<='9') num=s[i]-'0';
        else num=s[i]-'a'+10;

        if(num>d) d=num;
    }
    return d+1;
}

int main()
{
    while(cin>>a[1]>>a[2]>>tag>>radix)
    {
        if(a[1]=="1" && a[2]=="1")
        {
            cout<<"2"<<endl;
            continue;
        }
        if(a[1]==a[2])
        {
            cout<<radix<<endl;
            continue;
        }
        long long int num1=tolongint(a[tag],radix);

        int cur;
        if(tag==1) cur=2;
        else cur=1;

        bool flag=false;

        int begin=Maxnum(a[cur]);
        for(;;begin++)
        {
            long long int num2=tolongint(a[cur],begin);
            if(num2==num1)
            {
                flag=true;
                break;
            }
            else if(num2>num1) break;
        }

        if(flag) cout<<begin<<endl;
        else cout<<"Impossible"<<endl;
    }
    return 0;
}


#pragma warning (disable:4786)
#include<iostream>
#include<iomanip>
#include<string>
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;

string a[3];
long long int  tag,radix;
long long int num1;

long long int tolongint(string s,long long int  dig)
{
    long long int ans=0;
    long long int d=1;
    for(int i=s.size()-1;i>=0;i--)
    {
        int num;
        if(s[i]>='0' && s[i]<='9') num=s[i]-'0';
        else num=s[i]-'a'+10;

        ans=ans+num*d;
        d*=dig;
    }
    return ans;
}

int cmp(string s,long long int  dig)
{
    long long int ans=0;
    long long int d=1;
    for(int i=s.size()-1;i>=0;i--)
    {
        int num;
        if(s[i]>='0' && s[i]<='9') num=s[i]-'0';
        else num=s[i]-'a'+10;

        ans=ans+num*d;
        if(ans>num1) return 1;
        d*=dig;
    }
    if(ans==num1) return 0;
    return -1;
}

int Maxnum(string s)
{
    int d=-1;
    for(int i=0;i<s.size();i++)
    {
        int num;
        if(s[i]>='0' && s[i]<='9') num=s[i]-'0';
        else num=s[i]-'a'+10;

        if(num>d) d=num;
    }
    return d+1;
}

long long int Max(long long int a,long long int b)
{
    return a>b?a:b;
}

long long int BinarySearch(int cur)
{
    long long int L=Maxnum(a[cur]);
    long long int R=Max(L,num1),M;

    while(L<=R)
    {
        M=(L+R)/2;
        int res=cmp(a[cur],M);

        if(res==0) return M;
        else if(res==1) R=M-1;
        else L=M+1;
    }
    return -1;
}

int main()
{
    while(cin>>a[1]>>a[2]>>tag>>radix)
    {
        if(a[1]=="1" && a[2]=="1")
        {
            cout<<"2"<<endl;
            continue;
        }
        if(a[1]==a[2])
        {
            cout<<radix<<endl;
            continue;
        }
        num1=tolongint(a[tag],radix);

        int cur;
        if(tag==1) cur=2;
        else cur=1;

        long long int ans = BinarySearch(cur);

        if(ans==-1) cout<<"Impossible"<<endl;
        else cout<<ans<<endl;
    }
    return 0;
}


GEE:本地影像上传到GEE的Assets中,并输入机器学习算法中作为特征变量 当我们在 Google Earth Engine(GEE)中应用机器学习算法时,会输入一些影像作为特征变量数据,进一步根据这些特征影像去推理未知区域的数据。但是 GEE 平台上计算特征变量的 API 函数并不是非常全面,我们希望获得更多的特征用于分类。这个时候,我们可以将本地计算的特征影像上传到 GEE 中进行后续处理。本文记录了从本地上传特征数据到 GEE 的 Assets 中的教程,用于后续在 GEE 中分类或者回归使用。本文也可作为《》一文的补充。 阅读详情

相关推荐

ThinkpadCPU锁频0.4G问题

这篇帖子总结的很好,有这种问题可以试一试:但是切记,不要病急乱投医,冷静下来,慢慢分析和排除故障,有时候,并不需要我们知道所有的原理,只要问题解决了就是OK的。ThinkpadCPU锁频0.4G,具体是过程是今天我需要去楼下打印东西,要带着笔记本电脑,拔掉电源我就去楼下。一般这种问题很有可能是电源导致的,先不要病急乱投医,刷BIOS,装系统什么的,没用。但是确实解决了我的问题,记录下来。带着电脑回到工位,插上电源。突然我突发奇想,拔掉电源,神奇的事情发生了,CPU频率复活了,再插上电源,CPU完全恢复了。

小幽余生不加糖 1万+

1010 Radix (25 分)

一、问题描述 输入两个数N1、N2,和一个标记tag、一个基数radix,其意义是:tag为1时,radix是N1的基数;tag为2时,radix是N2的基数。方便起见,以下假定tag为1,则目标就是找到一个尽可能小的基数,使N2在此基数下的值等于N1在radix下的值。例如二进制下的110等于十进制下的6。 二、思路 做过的都知道,思路是不难的,就是坑实在不少,要想的全面一点。 1、暴力算法:...

自己人的博客 6478

避坑指南:RFSoC数据转换器多片同步配置的7个致命错误

本文深入剖析了在配置RFSoC多片同步功能时,工程师最常遇到的七个致命错误。从Tile 0的强制启用、时钟域与SYSREF时序,到跨代器件兼容性、电源序列以及动态重配置的陷阱,文章结合实战经验,提供了从原理到调试的完整RF数据转换器配置指南,旨在帮助开发者高效构建相位一致的大规模射频采样系统。

weixin_28452161的博客 533

[PAT甲级]1010. Radix 找出让等式成立的进制值

PAT甲级真题1010成功AC,使用Java语言,后续可能c++再来一版

hzykirito的博客 429

扩散模型在工业缺陷检测中的应用与优化

扩散模型作为生成式AI的重要分支,通过逐步去噪的逆向过程实现高质量数据生成。其核心U-Net架构结合残差连接和时间步嵌入,特别适合处理工业场景中的细微缺陷检测。在计算机视觉领域,这种技术突破了传统深度学习模型对小样本数据的限制,通过域自适应预训练和小样本微调两阶段框架,显著提升金属表面、纺织品等复杂场景的检测准确率。关键技术实现涉及噪声调度优化、多任务损失设计等工程实践,最终在MVTec AD等工业数据集上达到90%以上的检测精度,为智能制造提供可靠的自动化质检方案。

weixin_30512043的博客 497

训练集、验证集、测试集!YOLO系列标签数量统计!

【代码】训练集、验证集、测试集!YOLO系列标签数量统计!

qq_26281057的博客 649

pat 甲级 1010 Radix

先说一下整体思路,题目给出四个数据,分别是N1 N2 tag radix,当tag==1时,我们将radix进制下的N1转换成10进制,然后枚举各进制下的N2,再转换成10进制,判断是否与N1相等即可。,其值相当于10机制的x(此时进制数==他的值)。故进制的最大值应该是N1所能表示的最大值;因为N2里面的数字是永远小于他的进制的。故进制的下界就是N2里面的数字的最大值+1。其次就是进制暴力枚举的复杂度是o(n)的,会超时;而考虑到随着进制的增大,N2的数值也是增大的,是单调的,所以可以使用二分。

weixin_50671259的博客 557

故障排查:OpenClaw 更新后 feishu 插件路径失效的解决方法

OpenClaw 更新后 feishu 插件路径失效的解决方法发现问题→ Gateway 启动失败,报插件路径错误定位原因→ OpenClaw 目录结构变化,→解决问题→ 更新为正确的路径验证修复→ 使用确认一切正常。

刘一说的IT专栏 1304

1010 Radix

1010 Radix 注意点 如111 1 1 10类似情况下,若n为个位数,如果本身比另一个数小,则多少的进制都是没有用的(可能会造成空循环而超时),不过好像没有这么一个测试用例 进制应该比最少数据中的最大的数要大一,如8最少是9进制的数,z最少是36进制的数 注意算法中的超时问题如9999999999 11 1 10很容易超时,注意匹配的算法 如果用c等强类型语言写,注意溢出问题,int...

weixin_30614587的博客 202

基于STM32L4XX、HAL库的DP83822 以太网收发器(PHY)驱动程序设计

一、简介:DP83822是德州仪器(TI)推出的一款低功耗、高性能10/100Mbps以太网物理层收发器(PHY)。它具有以下主要特性:支持10BASE-T和100BASE-TX以太网标准低功耗设计,适合嵌入式应用MII/RMII接口,方便与微控制器连接内置自检和诊断功能支持自动协商和手动配置工业级温度范围(-40°C至+85°C)

zhusl6688的博客 526

labview高低拼接的理解

计算机的一个字节由8位组成,无符号的8位整形表示的范围为0~255,范围太小了,所以用双字节,即16位整形表示更大范围的数字0 ~65535。2.labview中的高低拼接实质是高8位字节左移8位与低8位字节相加,结果是双字节整形。

qwerqwerdhr的博客 834

ZJU PAT 1010

好久没写oj的题解了,今天做了pat 1010的题目,提交代码后才只有19分,最后在网上看到才发现radix的大小是long long级别的啊,那么我们就只能使用二分来查找结果了,那么剩下的就是理清思路了。 如果两个数字都是1,结果肯定是2如果两个数字相同,但不是1,结果肯定是题目输入的那个radix如果两个数字不相同,我们则有确定radix的范围呢?我们假设A的radix已经知道,那么

whosemario的专栏 4891

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

PAT 1010. Radix

题目:http://pat.zju.edu.cn/contests/pat-a-practise/1010 题解: 给两个数a,b和a的进制x,问b在哪个进制下和x进制的a相等。 本来看题目只说明了[0-9][a-z]的意义,以为答案最高只有36进制,提交之后错一大片T^T。测试了下,发现要求的进制竟然很大很大,而且可能超过int的表示范围。 如果从最小的进制开始往上枚举测试,最多只有两个

Ted's 游乐园 4534

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ZJU PAT 1010 Radix

题目见:http://pat.zju.edu.cn/contests/pat-a-practise/1010 本题采用二分方法搜索进制,注意由于我使用的方法是转换为十进制进行比较,所以C/C++中即使使用了long long 类型也可能会溢出,为方便起见,本题采用Java的BigInteger实现;或者可以考虑自己实现一个大数类。 import java.math.BigInteger; ...

haifengyululu的专栏 184

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【PAT】1010. Radix (25)

题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1010 题目描述: Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is "yes", if 6 is a decimal

此去经年 1686

1010. Radix (25)-PAT

1010. Radix (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a pair of positive integers, for example, 6 an

兵临城下 1911

PAT 1010. Radix (25)

http://pat.zju.edu.cn/contests/pat-a-practise/1010 Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is "yes", if 6 is a decimal number and

Steve Sun的专栏 886

http://pat.zju.edu.cn/contests/pat-practise/1010

1010. Radix (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a pair of positive integers, for example, 6 an

我不要写标题 747

ZJU PAT (Advanced Level) Practise 解析

PAT - 浙江大学计算机程序设计能力测试在线评判系统 浙大PAT(Advanced Level)题目地址:http://pat.zju.edu.cn/contests/pat-a-practise 下面主要是大致的阶解题思路,代码记录在Github上,请戳这里 1001.A+B Format 简单的模拟题,主要是a+b以后对结果的格式化,注意下细节就可以了 1002.A+B for...

weixin_30920513的博客 326

PAT乙级——1010(模拟操作)

题目: 一元多项式求导 (25 分) 设计函数求一元多项式的导数。(注:x​n​​(n为整数)的一阶导数为nx​n−1​​。) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0...

熊仙森滴Blog 1237

【逻辑】1010 Radix

1010 Radix (25 分) Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes, if 6 is a decimal number and 110 is a binary number. Now for any pair of positive integers N1 and N2 , your task is to find t

weixin_45836276的博客 341

【PAT甲级A1010 】1010 Radix (25分)(c++)

1010 Radix (25分) 作者:CHEN, Yue 单位:浙江大学 代码长度限制:16 KB 时间限制:400 ms 内存限制:64 MB Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes, if 6 is a decimal number and 110 is a binary number. Now for any pair

小庄同学的博客 367

PAT乙级1010,用C语言进行编程,设计函数进行一元多项式求导

本来计划一个暑假多刷一些关于PAT的题目,以及提升一下自己的编程能力。 结果,暑假倒是过去了,也步入研二了,但是这些文章呢,一直迟迟没有写出来。 我感觉非常不好意思,所以,从今天开始,我又回来继续写这些关于编程的文章了。 一方面呢,是为了提升自己的实力,另一方面呢,也是为了让更多小伙伴能跟我一起提升编程技术。 今天这道题目呢,是收录在PAT乙级中的第1010题,也就是一元多项式求导。 题目要求如下: 1、以指数递降的方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数),但这个括号里的

qq_42615643的博客 1035

PAT【甲级】1010

题目链接:PAT【甲级】1010 题目简述:给定形式为N1 N2 tag radix的输入用例,N1和N2是两串数字或字母(a-z,即对应十进制为10-35)组成的“数字串”,tag是标记后面radix(基数)是哪一个数字串的基数,为1就是第一个串。 让找出一个基数,来使得未给出基数和给出基数的数字串相等。如果有多个这样的基数,找到最小的那个。(其实这个条件限制很多余,不可能会出现多个不同的基数使得二者相等,毕竟是单调递增的) #include<bits/stdc++.h> using name

qq_41375322的博客 636

1010 Radix (25分)

1010 Radix (25分) 首先注意进制数不只是我们平时常用的那几种 注意string类型转换成int类型 第一步:先判断出要查找的这个数的进制上下限,下限是该数最大的那个数,上限是两个数中最大的那个数的十进制数 第二步:二分查找,转换成十进制之后,如果该数小于已确定数,说明进制太小,如果大于或者为负数,则证明进制太大 tips:单位数的时候从二进制依次往上找 rbegin()反向迭代器,begin()迭代器,用法都是固定的,记住就好 int isdigit(int) 参数是字符或ASCII码

zunzunle的博客 287
上一篇: ZJU-PAT 1070. Mooncake (25)
下一篇: ZJU-PAT 1081. Rational Sum (20)
Matrix_Reloaded
博客等级 码龄14年 18粉丝 36原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值