码迷,mamicode.com
首页 > 其他好文 > 详细

思维题+分数的进制转换——ICPC GNYR 2019 J

时间:2020-04-25 23:13:11      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:pre   mes   十进制   using   为什么   long   bit   icpc   cout   

/*
给定 base = p/q,找到一个数组a[],每个元素的范围是[0-9A-Za-z],就是[0,61] 
使 n = a[k]*base^k + a[k-1]*base^(k-1) + ... + a[1]*base + a[0]  
本质上是进制转换:将十进制数n转换成base进制
因为a[]数组的每个元素都是整数,所以在模运算时先除p,再乘q(想想为什么要先除再乘)
倒取余数法做一下就行 
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long 

ll n,p,q,a[1005],tot;

int main(){
    cin>>p>>q>>n;
    while(n){
        a[++tot]=n%p;
        n/=p;n*=q;
    }
    for(int i=tot;i>=1;i--){
        if(a[i]<=9)cout<<a[i];
        else if(a[i]>=10 && a[i]<=35)cout<<(char)(a[i]-10+A);
        else cout<<(char)(a[i]-36+a);
    }
    puts("");
}
 

 

思维题+分数的进制转换——ICPC GNYR 2019 J

标签:pre   mes   十进制   using   为什么   long   bit   icpc   cout   

原文地址:https://www.cnblogs.com/zsben991126/p/12775890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!