Problem 2102 Solve equation

Accept: 881    Submit: 2065

Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

You are given two positive integers A and B in Base C. For the equation:

A=k*B+d

We know there always existing many non-negative pairs (k, d) that satisfy the equation above. Now in this problem, we want to maximize k.

For example, A="123" and B="100", C=10. So both A and B are in Base 10. Then we have:

(1) A=0*B+123

(2) A=1*B+23

As we want to maximize k, we finally get one solution: (1, 23)

The range of C is between 2 and 16, and we use 'a', 'b', 'c', 'd', 'e', 'f' to represent 10, 11, 12, 13, 14, 15, respectively.

 Input

The first line of the input contains an integer T (T≤10), indicating the number of test cases.

Then T cases, for any case, only 3 positive integers A, B and C (2≤C≤16) in a single line. You can assume that in Base 10, both A and B is less than 2^31.

 Output

For each test case, output the solution “(k,d)” to the equation in Base 10.

 Sample Input

3
2bc 33f 16
123 100 10
1 1 2

 Sample Output

(0,700)
(1,23)
(1,0)

题目意思很好懂吧,然而做的时候就卡在了进制转换这,特意去百度了一下怎么转10进制;

网上是这样给的:

假如一个数abcdef,是x进制数,转10进制就是a*x^5+b*x^4+c*x^3+d*x^2+e*x^1+f*x^0;看懂了吧,当时还真这样用for循环遍历了一遍,还真对,运行结果及其他测试样例也都没错,但这思路代码活生生CE了6遍;

CE:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<ctype.h>
using namespace std;
int main()
{
int t,a,b,c,x1,x2;
char aa[55],bb[55];
scanf("%d",&t);
while(t--)
{
memset(aa,'0',sizeof(aa));
memset(bb,'0',sizeof(bb));
a=b=0;
scanf("%s%s%d",aa,bb,&c);
x1=strlen(aa);
x2=strlen(bb);
int x11=x1,x22=x2;
if(c==10)
{
for(int i=0;i<x1;i++)
a=a*10+(aa[i]-'0');
for(int i=0;i<x2;i++)
b=b*10+(bb[i]-'0');
}
else
{
for(int i=0;i<x1;i++)
{
if(islower(aa[i]))
a+=(aa[i]-'a'+10)*pow(c,x11-i-1);
else
a+=(aa[i]-'0')*(pow(c,(x11-i-1)));
}
for(int i=0;i<x2;i++)
{
if(islower(bb[i]))
b+=(bb[i]-'0'+10)*(pow(c,(x22-i-1)));//记得pow好像适用于double,可能要用pow(double(c),_);
else
b+=(bb[i]-'0')*(pow(c,(x22-i-1)));
}
}
int k=a/b,d=a-k*b;
printf("(%d,%d)\n",k,d);
}
return 0;
}

就这样浪费了一个水题;

看以AC的代码发现他们都是这样转10进制的: 字符串a输入,假如长度x,是c进制数,那么转10进制   int aa=0;

(1)      for(i=0;i<x;i++)

aa=aa*10+(aa[i]-'0')//字符串本身代表的就是10进制数;

(2)

for(i=0;i<x;i++)

aa=aa*10+(aa[i]-'a'+10)//字符串本身代表的不是10进制数,,,,,百度上怎么没有,,亿脸懵逼;;;

AC:

<span style="font-size:18px;">#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<ctype.h>
using namespace std;
int main()
{
int t,a,b,c,x1,x2;
char aa[55],bb[55];
scanf("%d",&t);
while(t--)
{
a=b=0;
scanf("%s%s%d",aa,bb,&c);
x1=strlen(aa);
x2=strlen(bb);
for(int i=0; i<x1; i++)
{
if(islower(aa[i]))
a=a*c+(aa[i]-'a')+10;
else
a=a*c+(aa[i]-'0');
}
for(int i=0; i<x2; i++)
{
if(islower(bb[i]))
b=b*c+(bb[i]-'a')+10;
else
b=b*c+(bb[i]-'0');
}
int k=a/b,d=a-k*b;
printf("(%d,%d)\n",k,d);
}
return 0;
}</span>

FZU2102Solve equation的更多相关文章

  1. CodeForces460B. Little Dima and Equation

    B. Little Dima and Equation time limit per test 1 second memory limit per test 256 megabytes input s ...

  2. ACM: FZU 2102 Solve equation - 手速题

     FZU 2102   Solve equation Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  3. HDU 5937 Equation

    题意: 有1~9数字各有a1, a2, -, a9个, 有无穷多的+和=. 问只用这些数字, 最多能组成多少个不同的等式x+y=z, 其中x,y,z∈[1,9]. 等式中只要有一个数字不一样 就是不一 ...

  4. coursera机器学习笔记-多元线性回归,normal equation

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  5. CF460B Little Dima and Equation (水题?

    Codeforces Round #262 (Div. 2) B B - Little Dima and Equation B. Little Dima and Equation time limit ...

  6. Linear regression with multiple variables(多特征的线型回归)算法实例_梯度下降解法(Gradient DesentMulti)以及正规方程解法(Normal Equation)

    ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, , ...

  7. ACM:HDU 2199 Can you solve this equation? 解题报告 -二分、三分

    Can you solve this equation? Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Su ...

  8. [ACM_数学] Counting Solutions to an Integral Equation (x+2y+2z=n 组合种类)

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=27938#problem/E 题目大意:Given, n, count the numbe ...

  9. hdu 2199 Can you solve this equation?(二分搜索)

    Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

随机推荐

  1. 【转】java编程思想第20章的注解例子用到的com.sun.mirror的jar包

    Java編程思想>中的注解代码中引入过这么一个包(com.sun.mirror),书上说的是在Jdk中有个tools.jar中,引入这个包就每这个问题了,但是笔者用的是JDK 1.8,把这个包i ...

  2. Android里的 ART、JIT、AOT、Dalvik之间有什么关系?

    ART.JIT.AOT.Dalvik之间有什么关系? JIT与Dalvik JIT是"Just In Time Compiler"的缩写,就是"即时编译技术", ...

  3. ZIP解压缩文件的工具类【支持多级目录|全】

    ZIP解压缩文件的工具类[支持多级目录|全] 作者:Vashon 网上有很多的加压缩示例代码,但是都只是支持一级目录的操作,如果存在多级目录的话就不行了.本解压缩工具类经过多次检查及重构,最终分享给大 ...

  4. Clean Code 第十章 : 类

    最近的CleanCode读到了第十章.这一张主要讲了如何去构造一个类,感觉的CleanCode至此已经不仅仅是单纯的讲如何'写'出漂亮的代码,而是从设计方向上去构造出好的代码了. 本章节主要讲了: * ...

  5. Java replaceAll不区分大小写

    Java 中replaceAll如何忽略大小写呢? 方式一:在正则表达式前面添加(?i) @Test public void test_replaceAll33(){ String input = & ...

  6. 在Windows 10 系统上启用Hyper V遇到的错误:0x800f0831

    Hyper-V是微软的一款虚拟化技术,是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术. 在Windows 10的powershell命令里,输入如下的命令 ...

  7. 推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager

    我们在本地启动Tomcat服务器后,用localhost:访问: 再点Manager App,即可进入Tomcat自带的Manager这个应用,此处可以单独部署/卸载每一个应用.可以看到在Manage ...

  8. ChromiumWebBrowser禁止鼠标右键和拖动

    在屏蔽之前先查看namespace CefSharp.WinForms内的代码 public class ChromiumWebBrowser : Control, IWebBrowserIntern ...

  9. SQL数据库移植到ARM板步骤

    SQL作为一种存储数据的数据结构,具有体积小(能堵存储的数据多),容易移植等优点.例如,在Ubuntu或者ARM开发板上被大量应用.下面就简单说一下SQL移植到ARM板的步骤. 下载源代码 (记得在家 ...

  10. EXPLAIN - 显示语句执行规划

    SYNOPSIS EXPLAIN [ ANALYZE ] [ VERBOSE ] statement DESCRIPTION 描述 这条命令显示PostgreSQL规划器为所提供的语句生成的执行规划. ...