FZU 2102 Solve equation

来源:互联网 发布:java项目流程 编辑:程序博客网 时间:2024/05/16 08:16
题意:求满足A=k*B+d的最大的k值,输出k,d的值,A,B有C进制转化过来的,最大的K值只要直接用A/B,应用整型的取整就可以了
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;int A,B,C;int main(){    int t;    scanf("%d%*c",&t);    while (t--){        int k,d;        char str1[1000],str2[1000];        scanf("%s%s%d",str1,str2,&C);        A = B = 0;        for (int i = strlen(str1)-1; i >= 0; i--){            if (str1[i] >= '0' && str1[i] <= '9')                A += (str1[i]-'0') * pow(C*1.0,(strlen(str1)-i-1)*1.0);            else                 A += (str1[i]-'a'+10) * pow(C*1.0,(strlen(str1)-1-i)*1.0);             }        for (int i = strlen(str2)-1; i >= 0; i--){            if (str2[i] >= '0' && str2[i] <= '9')                B += (str2[i]-'0') * pow(C*1.0,(strlen(str2)-1-i)*1.0);            else B += (str2[i]-'a'+10) * pow(C*1.0,(strlen(str2)-1-i)*1.0);         }        if (A % B == 0){            k = A / B;            d = 0;        }        else {            k = A / B;            d = A - k * B;        }        cout << "(" << k << "," << d << ")" << endl;    }    return 0;}



原创粉丝点击