FZU 2102 Solve equation

http://acm.fzu.edu.cn/problem.php?pid=2102

一道看起来特别牛逼但是却很简单的题。给你一个等式A=K*B+d,给你A,B,C,C为当前进制数,让你求出满足等式的k与D.(k,d)

看似有进制转换跟着,但并不难,K为A/B(转换为10进制之后),d=A%B

之后就都懂了

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#define Max 2188
#include <map>
using namespace std;
int convert(int scale,int x)
{
    int sum=1;
    for(int i=0;i<x;i++)
        sum*=scale;
    return sum;
}
int account(char a[],int suma,int scale)
{
    for(int i=strlen(a)-1,j=0;i>=0;i--,j++)
        {
            if(a[i]>='0'&&a[i]<='9')
                suma+=(a[i]-'0')*convert(scale,j);
            else
            {
                        switch(a[i])
                {
                    case 'a':
                            suma+=10*convert(scale,j);
                            break;
                    case 'b':
                            suma+=11*convert(scale,j);
                            break;
                    case 'c':
                            suma+=12*convert(scale,j);
                            break;
                    case 'd':
                            suma+=13*convert(scale,j);
                            break;
                    case 'e':
                            suma+=14*convert(scale,j);
                            break;
                    case 'f':
                            suma+=15*convert(scale,j);
                            break;
                }
            }
        }
        return suma;
}
int main()
{
    int t;
    scanf("%d%*c",&t);
    char  a[34],b[34];
    int scale;
    while(t--)
    {
        scanf("%s %s %d",a,b,&scale);
        int suma=0,sumb=0;
        suma=account(a,suma,scale);
        sumb=account(b,sumb,scale);

        printf("(%d,%d)\n",suma/sumb,suma%sumb);

    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值