zoukankan      html  css  js  c++  java
  • ACM题解报告——进制数取于余

     
     
     
     
      这道题折磨了我好久,开始以为要把输入X进制串转换为十进制串,然后对十进制串进行逐位取余,但是由于X进制串的位数会非常大,没有想到好的转换算法,这里我是对X进制串进行逐位取余,这样就不会受其位数的影响了,代码也比较简单,涉及到的一个常用的公式就是(a+b)%c=[(a%c)+(b%c)]%c.
    代码如下:
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    int main( )
    {
      int t,b,sum,len,i;
      char a[105];
      cin>>t;
    while(t--)
    {
      sum=0;
      cin>>b>>a;
      len=strlen(a);//计算a字符串长度
      for(i=0;i<len;i++)//核心
    {
      sum+=(a[i]-'0')*b;//将最高位的X进制数转化为十进制
      sum*=b;//左移一位
      sum%=( b+1);//逐位取余
     }
      cout<<sum<<endl;
     }
      return 0;
    }
     
  • 相关阅读:
    设计模式--单例模式Singleton
    CSS选择器
    操作数据表
    HTML
    Shell学习
    LINUX常用命令
    多线程-互斥变量
    多线程-临界区
    每天一个linux命令:file(11)
    JavaScript设计模式小抄集(持续更新)
  • 原文地址:https://www.cnblogs.com/paradises/p/3078597.html
Copyright © 2011-2022 走看看