进制转换 + 大整数取模
一,题意:
  在b进制下,求p%m,再装换成b进制输出。
  其中p为b进制大数1000位以内,m为b进制数9位以内
二,思路:
  1,以字符串的形式输入p,m;
  2,转换:字符串->整数 十进制->b进制;
  3,十进制下计算并将整形结果转换成字符串形式,并倒序储存;
  4,输出。
三,步骤:
  1,输入p[],m[];
  2,字符串->整形 + 进制->b进制:
    i,进制转换语句:m2 = m2*b + m[j]-'0';
    ii,大整数取模,大整数可以写成这样的形式:
    12345 = ( ( (1 * 10+2) * 10+3) * 10+4) * 10+5
    如二进制数(1100)=( ( (1 * 2+1) * 2+0) * 2+0) (2表示进制数)
    为避免大数计算,进制转化时顺便求模
    p2 = (p2*b + p[i]-'0') % m2;
  3,转换并倒序储存: ans[k++] = p2%b + '0'; p2 /= b ;
  4,倒序输出

 #include<iostream>
#include<string.h>
using namespace std;
const int N=; //大数位数 int main(){
int b; //进制数
while(cin>>b&&b){
char p[N] , m[N] , ans[N];
int p2 = , m2 = ; //定义用来储存十进制的被除数、除数
cin>>p>>m;
for(int j= ; j<strlen(m) ; j++){ //把n进制字符串除数转换为十进制数字除数
m2 = m2*b + m[j]-'';
}
for(int i= ; i<strlen(p) ; i++){ //把n进制字符串被除数转换为十进制数字被除数
p2 = (p2*b + p[i]-'') % m2; //为避免大数计算,进制转化时顺便求模
}
if(!p2)
cout<<<<endl;
else{
int k = ;
while(p2){
ans[k++] = p2%b + ''; //把10进制数 转换为 n进制字符串倒序并存入 P[] 中
p2 /= b;
}
for(int i = k- ; i >= ; i--)
cout<<ans[i];
cout<<endl;
}
}
return ;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

poj2305-Basic remains(进制转换 + 大整数取模)的更多相关文章

  1. POJ 2305:Basic remains 进制转换

    Basic remains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5221   Accepted: 2203 Des ...

  2. cogs 2170. 大整数取模

    2170. 大整数取模 ★   输入文件:bigint.in   输出文件:bigint.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 输入正整数n和m,输出n mo ...

  3. 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】

    3751: [NOIP2014]解方程 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 4856  Solved: 983[Submit][Status ...

  4. hdu 4474 大整数取模+bfs

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4474 (a*10+b)%c = ((a%c)*10+b%c)%c; 然后从高位开始枚举能填的数字填充, ...

  5. C语言关于进制转换,补码, 整数的位操作

    菜单导航: 1.二进制.八进制.十进制.十六进制的相互转换 2.原码.反码.补码 3.举例证明整数在计算机内是以补码的形式存在(以负数为例) 4.整数的位操作:按位且&.或|.异或^.取反~ ...

  6. 大数据学习--day02(标识符、变量、数据类型、类型转换、进制转换、原码反码补码)

    标识符.变量.数据类型.类型转换.进制转换.原码反码补码 标识符: java50个关键字不能做标识符,以数字开头不能做标识符(这个老是忘记写一个类名的时候) 变量: 变量分为成员变量和局部变量,注意作 ...

  7. POJ 1220 大数字的进制转换,偷下懒,用java

    题意为进制转换,Java的大数类就像是作弊 import java.math.BigInteger; import java.util.Scanner; public class Main { pub ...

  8. 【搬砖】安卓入门(2)- Java开发编程基础--进制转换和运算符

    02.01_Java语言基础(常量的概述和使用)(掌握) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 ...

  9. Java基础复习之一篇:关健字,标识符,注释,常量,进制转换,变量,数据类型,数据类型转换

    1.关健字 1.1.被Java语言赋予特定意义的单词(如:class,interface,public ,static) 1.2.全部是小写 1.3.注意事项(goto和const作为关健字保留起来) ...

随机推荐

  1. HTML DOM学习之三

    1.创建新的HTML元素:appendChild(); 如需向HTML DOM添加元素,首先必须创建该元素,然后把它追加到已有的元素上: <div id="div1"> ...

  2. DOM--6 向应用程序中加入ajax

    组合技术 适当的ajax时对已有技术和下列思想的组合 语义化(X)HTML标记 文档对象模型(DOM) JavaScript XML 不同浏览器中,公共XMLHttpRequest方法 open(me ...

  3. 快消品销售管理系统,PDA销售管理系统,销售拜访PDA,进销存管理PDA系统 移动扫描打印开单POS

    各种ERP软件的移动订单及移动车销解决方案是针对各个需要快速.便捷的,通过智能PDA移动智能终端设备实现销售订单下达及快速车销的应用解决方案.通过将移动订单及移动车销集成到ERP的移动解决方案,可以帮 ...

  4. Python基础7- 流程控制之循环

    循环: 把一段代码重复性的执行N次,直到满足某个条件为止. 为了在合适的时候,停止重复执行,需要让程序出现满足停止循环的条件.Python中有三种循环(实质只有两种): while循环 for循环 嵌 ...

  5. django 视图开发与url配置

    可识别的视图需满足一下两个条件: 1.第一个参数的类型:HttpRequest 2.返回HttpResponse实例 在新建app的views当中写下以下内容 from django.shortcut ...

  6. Redis Java API

    package cn.ac.iscas.pebble.dc.redispool; import java.io.File; import java.io.FileOutputStream; impor ...

  7. ACM: HDU 1028 Ignatius and the Princess III-DP

     HDU 1028 Ignatius and the Princess III Time Limit:1000MS     Memory Limit:32768KB     64bit IO Form ...

  8. 【BZOJ】1367: [Baltic2004]sequence

    题意 给\(n(n \le 10^6)\)个数的序列\(a\),求一个递增序列\(b\)使得\(\sum_{i=1}^{n} |a_i-b_i|\)最小. 分析 神题啊不会. 具体证明看黄源河论文&l ...

  9. (转)C#/.NET主线程与子线程之间的关系

    一般 一个应用程序就对应一个进程,一个进程可有一个或多个线程,而一般有一个主线程.       有的博客上说“至少一个主线程”,这一说法持有怀疑         主线程与子线程之间的关系        ...

  10. C++ substr() 和 Java substring() 区别

    Java和C++中都有关于子字符串的操作,C++中是substr(),Java中是substring(),两者的用法上稍有些区别,首先针对只有一个参数的情况: s.substr(start) 和 s. ...