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. 使用Appache部署WEB服务器

    Apache的起源(这个就不说了,百度下就都有了) 简介:Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行, ...

  2. 数位dp知识

    转自http://blog.csdn.net/zhaoxinfan/article/details/8707605 下面先给出数位DP的背景: •在给定区间[A,B]内,找满足要求的数. •要求一般和 ...

  3. 初识jstl标签库

    JSTL(JSP Standard Tag Library,JSP标准标签库) 是一个不断完善的开源的 JSP 标签库,是由 apache 的 jakarta 小组来维护的,根据 JST L标签所提供 ...

  4. JAVA解析XML的几种方法

    DOM DOM Document Object Model 文档对象模型.在应用程序中,基于DOM的解析器将一个XML文档转换成一个对象模型的集合(DOM树),应用程序正是通过对这个对象模型的操作,来 ...

  5. whereis参数

    -b  只找二进制文件 -m 只找在帮助文件manual路径下的文件 -s 只找原文件 -u 没有帮助文件的文件 whereis passwd

  6. Mac上安装Homebrew和wget

    实际上是使用Homebrew来安装wget 安装Homebrew Homebrew一般称为brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常 ...

  7. upupw nginx服务器 rewrite设置

    最近开始尝试使用upupw的Nginx套件做开发,感觉还挺不错的,也遇到了一些问题,决定在这里记录一下,同时也希望可以帮助到一些人. 用习惯了Apache,改用Nginx之后会有些不适应,但是咬咬牙就 ...

  8. 工作笔记:复制文件--从windows到ubuntu,再到fedora

    最近在测试跨平台类库,于是写了一些小程序. 当然主要利用vs进行主要的代码开发.eclipse进行linux的调试. 那么需要不时同步项目文件. 考虑到项目简单,所以没有使用svn. 1. 从wind ...

  9. Android(java)学习笔记179:多媒体之加载大图片到内存(Bitmap API)

    1. Bitmap (API使用) android里面的bitmap中,一个像素点需要4个byte去表示,这是因为android表示颜色是" argb ":其中 a 表示是透明度, ...

  10. Linux centos7开机界面出现多个选项

    centos7开机界面出现多个选项时 前面几个选项正常启动,最后一个选项急救模式启动(系统出项问题不能正常启动时使用并修复系统) 在CentOS更新后,并不会自动删除旧内核.所以在启动选项中会有多个内 ...