HDOJ 4278  Faulty Odometer
2015-12-18 18:13
183 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4278
题目意思为:有一个里程表没有3,8这两个数字0,1,2,4,5,6,8,9这八个数字构成一个循环(一个八进制)但数字的顺序不一样,先将给定的数字转化为实际的数字(八进制),再将八进制转化为十进制
代码:
#include
#include
using namespace std;
int main()
{
int
n,i,j,tep,sum,a[10];
while(scanf("%d",&n),n)
{
i=0;
sum=n;
while(n)
a[i++]=n,n/=10;
i--;
for(j=i;j>=0;j--)
//将数字转化为实际的八进制数
{
if(a[j]>=3&&a[j]<8)
{
a[j]--;
continue;
}
if(a[j]>=8)
{
a[j]-=2;
continue;
}
}
tep=1;
n=0;
for(j=0;j<=i;j++)
//八进制转化为十进制
n+=a[j]*tep,tep*=8;
printf("%d: %d\n",sum,n);
}
return
0;
}
。。。。。。。。。。。。
题目意思为:有一个里程表没有3,8这两个数字0,1,2,4,5,6,8,9这八个数字构成一个循环(一个八进制)但数字的顺序不一样,先将给定的数字转化为实际的数字(八进制),再将八进制转化为十进制
代码:
#include
#include
using namespace std;
int main()
{
int
n,i,j,tep,sum,a[10];
while(scanf("%d",&n),n)
{
i=0;
sum=n;
while(n)
a[i++]=n,n/=10;
i--;
for(j=i;j>=0;j--)
//将数字转化为实际的八进制数
{
if(a[j]>=3&&a[j]<8)
{
a[j]--;
continue;
}
if(a[j]>=8)
{
a[j]-=2;
continue;
}
}
tep=1;
n=0;
for(j=0;j<=i;j++)
//八进制转化为十进制
n+=a[j]*tep,tep*=8;
printf("%d: %d\n",sum,n);
}
return
0;
}
。。。。。。。。。。。。
相关文章推荐
- POJ&nbsp;2364&nbsp;Balanced&nbsp;Lineup
- 转载用ST的RMQ算法
- 字典树
- KMP字符串模式匹配详解
- HDOJ&nbsp;&nbsp;4341&nbsp;&nbsp;Gold&nbsp;miner[条件背包]
- Lucas定理&nbsp;&amp;&amp;&nbsp;HODJ&nbsp;&nbsp;4349
- HDOJ&nbsp;&nbsp;4342&nbsp;&nbsp;&nbsp;History&nbsp;repeat&nbsp;itse…
- HDOJ&nbsp;&nbsp;1597&nbsp;&nbsp;&nbsp;&nbsp;find&nbsp;the&nbsp;nth&nbsp;digit
- HDOJ&nbsp;&nbsp;1262&nbsp;&nbsp;&nbsp;寻找素数对
- swap函数
- 威佐夫博弈、黄金分割、POJ&nbsp;&nbsp;1067
- 如何写出很牛的代码,提高你的代码…
- 由poj&nbsp;1067引发的——取石子游…
- POJ题目分类
- HDOJ&nbsp;&nbsp;1999&nbsp;&nbsp;不可摸数
- HDOJ&nbsp;&nbsp;1240&nbsp;&nbsp;&nbsp;Asteroids!
- 优先队列&amp;&amp;队列
- 几点建议,让Redis在你的系统中发挥更大作用
- [经典算法]计数排序
- 不一样的H5 3D动态内容