hdu4278poj2719--Faulty Odometer--进制转换

2024-06-12 12:18

本文主要是介绍hdu4278poj2719--Faulty Odometer--进制转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先说下poj2719吧,

题目链接:http://poj.org/problem?id=2719

第一次做进制转换,没做过,非常二货地模拟了好久。

实际上非常简单,就是一个9进制的数转成一个10进制的数。

以下是代码:

#include <cstdio>
using namespace std;char a[20];
int ans;
void cal(int n)
{int cnt=0;while(n){a[cnt++]=n%10+'0';if(a[cnt-1]>'4') a[cnt-1]-=1;n/=10;}for(int i=cnt-1;i>=0;--i){ans*=9;ans+=a[i]-'0';}
}
int main()
{int n;while(~scanf("%d",&n),n){ans=0;cal(n);printf("%d: %d\n",n,ans);}return 0;
}


下一题是去年的一道网络预选赛的题目(HDU4278),

比上面那道题还要简单!

因为有两个数,

所以为8进制转10进制数!!!

第一种做法,和上面那种差不多,

代码如下:

#include <cstdio>
using namespace std;int wei[20];
int ans;void cal(int n)
{ans=0;int cnt=0;while(n){wei[cnt++]=n%10;n/=10;}for(int i=0;i<cnt;++i){if(wei[i]>8) wei[i]-=2;else if(wei[i]>3) wei[i]-=1;}for(int i=cnt-1;i>=0;--i){ans*=8;ans+=wei[i];}
}
int main()
{//freopen("input.txt","r",stdin);int n;while(~scanf("%d",&n),n){cal(n);printf("%d: %d\n",n,ans);}return 0;
}


实质上可以更简单,这也是现场为什么有人1分钟过题的原因。。。。。。。。。。

因为是8进制,

所以可以sscanf!+%o(读入一个8进制数),PS:%x(读入一个16进制数)


新知识1:

%a,%A 读入一个浮点值(仅C99有效)   
%c 读入一个字符   
%d 读入十进制整数   
%i 读入十进制,八进制,十六进制整数   
%o 读入八进制整数   
%x,%X 读入十六进制整数   
%s 读入一个字符串,遇空格、制表符或换行符结束。   
%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。   
%p 读入一个指针   
%u 读入一个无符号十进制整数   
%n 至此已读入值的等价字符数   
%[] 扫描字符集合   
%% 读%符号


新知识2:

scanf是从stdin中读入数据,而sscanf是从一个字符串读入数据!!!!!!!!!!!!!!!!!


以下是代码:

#include <cstdio>
#include <cstring>
using namespace std;
char a[20];
int main()
{//freopen("input.txt","r",stdin);while(~scanf("%s",a)){int n=0,ans,len=strlen(a);if(strcmp(a,"0")==0) break;for(int i=0;i<len;++i){n=n*10+a[i]-'0';if(a[i]>'8') a[i]-=2;else if(a[i]>'3') a[i]-=1;}sscanf(a,"%o",&ans);printf("%d: %d\n",n,ans);}return 0;
}



这篇关于hdu4278poj2719--Faulty Odometer--进制转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054191

相关文章

usaco 1.2 Palindromic Squares(进制转化)

考察进制转化 注意一些细节就可以了 直接上代码: /*ID: who jayLANG: C++TASK: palsquare*/#include<stdio.h>int x[20],xlen,y[20],ylen,B;void change(int n){int m;m=n;xlen=0;while(m){x[++xlen]=m%B;m/=B;}m=n*n;ylen=0;whi

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

数据流与Bitmap之间相互转换

把获得的数据流转换成一副图片(Bitmap) 其原理就是把获得倒的数据流序列化到内存中,然后经过加工,在把数据从内存中反序列化出来就行了。 难点就是在如何实现加工。因为Bitmap有一个专有的格式,我们常称这个格式为数据头。加工的过程就是要把这个数据头与我们之前获得的数据流合并起来。(也就是要把这个头加入到我们之前获得的数据流的前面)      那么这个头是

高斯平面直角坐标讲解,以及地理坐标转换高斯平面直角坐标

高斯平面直角坐标系(Gauss-Krüger 坐标系)是基于 高斯-克吕格投影 的一种常见的平面坐标系统,主要用于地理信息系统 (GIS)、测绘和工程等领域。该坐标系将地球表面的经纬度(地理坐标)通过一种投影方式转换为平面直角坐标,以便在二维平面中进行距离、面积和角度的计算。 一 投影原理 高斯平面直角坐标系使用的是 高斯-克吕格投影(Gauss-Krüger Projection),这是 横

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客  这节就是真正的存储数据了   理清一下思路: 1.存储路径并检查 //2进制文件类存储private static string Data_Binary_Pa

VC环境下整型转换为字符串型(2)

在串口下位机的发送中,可能会用到需要发送数字,显示为字符串型的 和上一篇文字《串口中字符串转换为整型》一正一反,知识点学习会了: #include<iostream.h> #include <stdio.h> #include <string.h>   void inttostr(int m,unsigned char * str) { int length=0;   int tmp,te

时间日期与时间戳转换(Linux C)

本文主要学习三个知识点,第一是UTC时间、GMT时间的概念;第二是在Unix环境下UTC时间与时间戳的转换;第三是在C语言中如何修改时区。 本文参考了《UNP》以及 http://blog.csdn.net/foxir/article/details/43916601 http://blog.csdn.net/ljafl9988/article/details/16847935 一、

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(2) (*****生成数据结构类的方式特别有趣****)-CSDN博客 做完了数据结构类,该做一个存储类了,也就是生成一个字典类(只是声明)  实现和上一节的数据结构类的方式大同小异,所