zoukankan      html  css  js  c++  java
  • POJ 2305 Basic remains(进制转换)

    题目链接:http://poj.org/problem?id=2305

    ime Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 5326   Accepted: 2267

    Description

    Given a base b and two non-negative base b integers p and m, compute p mod m and print the result as a base b integer. p mod m is defined as the smallest non-negative integer k such that p = a*m + k for some integer a.

    Input

    Input consists of a number of cases. Each case is represented by a line containing three unsigned integers. The first, b, is a decimal number between 2 and 10. The second, p, contains up to 1000 digits between 0 and b-1. The third, m, contains up to 9 digits between 0 and b-1. The last case is followed by a line containing 0.

    Output

    For each test case, print a line giving p mod m as a base-b integer.

    Sample Input

    2 1100 101
    10 123456789123456789123456789 1000
    0
    

    Sample Output

    10
    789

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<limits.h>
     5 #include<queue>
     6 using namespace std;
     7 char a[1005],b[10];
     8 long long c,e;//开int会WA
     9 int len1,len2;
    10 int f[10];
    11 int change1()//把b转换成十进制//对的
    12 {
    13     int d=0,i;
    14     for(i=0;i<len2;i++)
    15     {
    16         d=d*c+b[i]-'0';
    17     }
    18     return d;
    19 }
    20 void change2()//把十进制e转化成目标进制输出
    21 {
    22     int i;
    23     for(i=0;i<10;i++)
    24     {
    25         if(e<c)break;
    26         f[i]=e%c;
    27         e/=c;
    28     }
    29     f[i]=e;
    30     int len3=i+1;
    31     for(i=len3-1;i>=0;i--)
    32     {
    33         if(i==len3-1&&f[i]==0&&len3!=1)
    34             continue;
    35         else
    36             cout<<f[i];
    37     }
    38     cout<<endl;
    39 }
    40 int main()
    41 {
    42     int i;
    43     while(cin>>c&&c)
    44     {
    45         cin>>a>>b;
    46         len1=strlen(a);
    47         len2=strlen(b);
    48         int d=change1();
    49         //cout<<d<<endl;
    50         e=0;
    51         for(i=0;i<len1;i++)
    52         {
    53             e=e*c+a[i]-'0';
    54             e=e%d;
    55         }
    56         //cout<<e<<endl;
    57         change2();
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    准确率99.9%的离线IP地址定位库
    手写一个消息队列以及延迟消息队列
    rabbitmq介绍
    污点和亲和力高级调度方式
    ceph
    Vue作业
    label和labelSeletor
    http状态简记
    数据库
    作业
  • 原文地址:https://www.cnblogs.com/Annetree/p/5682301.html
Copyright © 2011-2022 走看看