1958: 数字游戏

Submit Page   Summary   Time Limit: 2 Sec     Memory Limit: 128 Mb     Submitted: 134     Solved: 19


Description

小明今年才上一年级,加减法只会算加一和减一。老师就是喜欢看小明写不出题目的样子,所以给小明出了个难题:给出两个数字x,y,每次可以让数字的某一位加一或者减一(0减1变成9,9加1变成0)。问从x变到y至少要几次操作?小明虽然数学不好但是编程很强呀,他很快就得出了正确答案,现在看你的了~
注意:每次变换只能变动除前导零的数位。例如1109变成0109后不能变再成1109或者9109,但是单就一个数字0可以变成1或9。

Input

第一行是一个数字T(T<=10)表示数据组数
接下来T行,每行两个数字x,y(0<=x,y<=100000)
x和y不包含前导零

Output

输出包括T行,第i行对应第i组数据的答案.
如果x无法变成y,输出-1

Sample Input

3
10 11
99 100
52 75

Sample Output

1
-1
5

Hint

Source

2017年6月月赛-暨中南大学暑期集训选拔赛第二场

Author

卢铭威

题解:这个题目我是没有想明白  为什么要2sec   0ms的事情

先比较一下这个 数字的长度    判断前一个数字可不可以转变成第二个   如果可以的话

从最后一位可以变   一个循环遍历所有位就可以了   数据最大才6位数

 #include<iostream>
#include<cstdio>
#include<math.h>
#include<algorithm>
#include<stdlib.h>
using namespace std;
int main()
{
int n,x,y,num1,num2,ans;
scanf("%d",&n);
while(n--)
{
ans=;
scanf("%d%d",&x,&y);
int temp1=x,temp2=y;
num1=num2=;
while(temp1>)
{
temp1/=;
num1++;
}
while(temp2>)
{
temp2/=;
num2++;
}
if(num1<num2)
{
printf("-1\n");
continue;
}
for(int i=;i<num1;++i)
{
temp1=x%;
temp2=y%;
int h=abs(temp1-temp2);
ans+=min(h,-h);
x/=;
y/=;
}
printf("%d\n",ans);
}
return ;
}

最新文章

  1. UWP中重用C/C++代码时踩过的一些坑
  2. mac/linux常用命令
  3. Android DiskLruCache 源码解析 硬盘缓存的绝佳方案
  4. Scrum4.0
  5. Silverlight的TextWrapping
  6. 20160815_设置静态IP
  7. Build常见错误
  8. 【CSS3】---only-child选择器+only-of-type选择器
  9. Android sendMessage 与 obtainMessage (sendToTarget)比较
  10. java 关于extends 和implement的区别
  11. 武汉科技大学ACM:1007: 陶陶摘苹果
  12. 用CSS样式画横线和竖线的方法
  13. 正确lua简单的扩展,可以加速相关C++数据。
  14. 数字图像处理(MATLAB版)学习笔记(2)——第2章 灰度变换与空间滤波
  15. java常见排序方法
  16. iOS中Safari浏览器select下拉列表文字太长被截断的处理方法
  17. 使用open live writer客户端写博客
  18. Android 引用文件(.db)的三种方式
  19. 解决bug感觉
  20. ListView and gridview常用属性

热门文章

  1. MD5加密的引用
  2. @Autowired 与@Resource的区别详解
  3. ID生成算法(一)——雪花算法
  4. centos7使用yum提示有事物未完成的解决办法:
  5. Flask上下文源码分析(一)
  6. Struts2(补充)
  7. python 设计模式之状态模式
  8. python 适合的才是最好的
  9. List&amp;Set
  10. osg qt fbx ifc bim osg ive 3ds max rvt