进制转换 + 大整数取模
一,题意:
  在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. Uva 725 Division

    0.不要傻傻的用递归去构造出一个五位数来,直接for循环最小到最大就好,可以稍微剪枝一丢丢,因为最小的数是01234 从1234开始,因为倍数n最小为2 而分子是一个最多五位数,所以分母应该小于五万. ...

  2. [xsd学习]复合元素

    对于xsd,复合元素的定义有两种方式: 一.在元素内部直接声明,此种方法只能此元素使用 <xs:element name="employee"> <xs:comp ...

  3. 我的c++学习(7)引用和复制构造函数

    一.引用 什么是引用? 引用又称别名(alias),是一种非常特殊的数据类型.它不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名,也就是 C++系统不为引用类型变量分配内存空间.引用主要用 ...

  4. section和article元素

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. BZOJ4385 : [POI2015]Wilcze doły

    求出前缀和$s$,设$f[i]=s[i+d-1]-s[i-1]$. 从左到右枚举的右端点$i$,左端点$j$满足单调性,若$s[i]-s[j-1]-\max(区间内最大的f)\leq p$,则可行. ...

  6. Coder-Strike 2014 - Round 1 D. Giving Awards

    题目的意思是 老板给n个人发工资,x欠y的工资,the joy of person x from his brand new money reward will be much less, 老板想避免 ...

  7. UVA 11489 - Integer Game(找规律)

    题目链接 #include <cstdio> #include <cstring> #include <string> #include <cmath> ...

  8. iOS9 tableVIewCell的分割线不显示,只有在滑动的时候才显示?

    1.如果用6plus模拟器的话,电脑分辨率达不到那么高,因此就看不到分割线. 2.把模拟器换成6s 或 5s,就没问题了.

  9. Spring中@Async用法总结

    引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在Spring 3. ...

  10. 分馅饼 Pie

    Pie 链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/C 题目: Problem Description ...