Binary mod and divide(模拟+大数)
描述
Most people know that the binary operations. Do you know the binary mod and divide?
Now give the Binary number N and a integer number M ,Can you tell me the answer of N%(2^M) and N/(2^M)?
输入
Input contains multiple test cases.
The first line of each test case contains an binary number N no more than 128 bits and an integer M (1 <= M <= 64).
when N=0&&M=0 ,test is over.
输出
output the answer the N%(2^M) and N/(2^M).
样例输入
111 2
1111 2
0 0
样例输出
mod=3, divide=1
mod=3, divide=3
题目大意是: 给一个不超过128位的二进制数N,和一个整数M,求N%(2^M)和N/(2^M).
1.把2^M次转化成二进制,即1后面M个0;N的最小位开始数M位,把N分成两部分,左边为倍数,右边为余数。
eg:1010101101,5 .即倍数的二进制为10101,余数的二进制为01101.
2.计算的话,2^128次longlong存不下,所以用数组存了。
代码:
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
char a[];
void add(int l,int r,int b[])
{
for(int i=l;i<r;i++)
{
for(int j=;j<;j++)
b[j]*=;
b[]+=a[i]-'';
for(int j=;j<;j++)
{
if(b[j]>=)
{
b[j+]+=b[j]/;
b[j]%=;
}
}
}
}
int main()
{
int m,i,l;
int b[],c[];
while(scanf("%s%d",a,&m))
{
if(!m&&a[]=='') break;
memset(b,,sizeof(b));
memset(c,,sizeof(c));
l=strlen(a);
add(,l-m,b);
add(max(,l-m),l,c);
35 printf("mod=");
for(i=;i>=;i--)
if(c[i]) break;
if(i==-) printf("");
for(;i>=;i--)
printf("%d",c[i]);
41 printf(", divide=");
for(i=;i>=;i--)
if(b[i]) break;
if(i==-) printf("");
for(;i>=;i--)
printf("%d",b[i]);
putchar();
}
}
Binary mod and divide(模拟+大数)的更多相关文章
- 2016中国大学生程序设计竞赛(长春) Ugly Problem 模拟+大数减法
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5920 我们的思路是: 对于一个串s,先根据s串前一半复制到后一半构成一个回文串, 如果这个回文串比s小, ...
- 51 Nod 1008 N的阶乘 mod P【Java大数乱搞】
1008 N的阶乘 mod P 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %) 例如:n ...
- hdu_1042(模拟大数乘法)
计算n! #include<cstring> #include<cstdio> using namespace std; ]; int main() { int n; whil ...
- UVA 10375 Choose and divide(大数的表示)
紫上给得比较奇怪,其实没有必要用唯一分解定理.我觉得这道题用唯一分解只是为了表示大数. 但是分解得到的幂,累乘的时候如果顺序很奇怪也可能溢出.其实直接边乘边除就好了.因为答案保证不会溢出, 设定一个精 ...
- Codeforces 960D Full Binary Tree Queries ( 思维 && 模拟 )
题意 : 给出一颗无限层的满二叉树,然后每个值为 X (根的 X 等于 1 ) 左孩子的值是 2*X,右孩子的值是 2*X+1 ,现在有两种操作,(1, x,k) 表示将 x 所在层的所有节点整体向右 ...
- (A - 整数划分 HYSBZ - 1263)(数组模拟大数乘法)
题目链接:https://cn.vjudge.net/problem/HYSBZ-1263 题目大意:中文题目 具体思路:先进了能的拆成3,如果当前剩下的是4,就先不减去3,直接乘4,如果还剩2的话, ...
- HDU 1002.A + B Problem II-数组模拟-大数相加
A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- nyoj--1233--差值(贪心模拟+大数)
差值 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 输入一个整数数组,将它们连接起来排成一个数,找出能排出的所有数字中最大,最小的两个,输出两个数的差值.例如输入数组{ ...
- 字符串模拟大数相加——Java实现
本题是CVTE二面编程题,首先考虑返回值肯定是一个字符串(int会有溢出可能),并且两个字符串只含数字,不含”+“.”-“这种. 代码如下: public static String add(Stri ...
随机推荐
- vue项目node升级后,node-saas报错解决办法
ERROR in ./node_modules/_extract-text-webpack-plugin@3.0.2@extract-text-webpack-plugin/dist/loader.j ...
- 转 做了两款数据库监控工具(mysql and nosql),打算在近期开源
http://www.cnblogs.com/leefreeman/p/7297549.html 监控指标:https://www.linuxidc.com/Linux/2015-08/122009. ...
- FACVSPOW - Factorial vs Power 数学方法 + 二分
http://www.spoj.com/problems/FACVSPOW/ 求解n! > a^n最小的整数n 对于有n!和a^n的东西,一般是取ln 然后就是求解 (ln(1) + ln(2) ...
- Myisamchk使用
Myisam损坏的情况: . 服务器突然断电导致数据文件损坏;强制关机,没有先关闭mysql 服务;mysqld 进程在写表时被杀掉.因为此时mysql可能正在刷新索引. . 磁盘损坏. . 服务器死 ...
- ionic之自定义图片
一个好的app,必须都有很好的ui设计师来设计界面,增强客户的体验,表现自己本身公司的特色,但是,在ionic中有些是无法用img标签直接引入图片,只能通过设定的css之后引入css. 页面: < ...
- new几种用法
在 C# 中,new 关键字可用作运算符.修饰符或约束. new 运算符 用于创建对象和调用构造函数. new 修饰符 用于向基类成员隐藏继承成员. new 约束 用于在泛型声明中约束可能用作类型参数 ...
- CSS预处理less基本使用
中文API http://lesscss.cn 变量 @变量名:变量值 @maincolor:#aeeeee; @acolor:#ffffff; @ht200:200px; @ht50:50p ...
- cordova安装方法
安装cordova之前需要先安装node.js和npm 然后在命令行运行:npm install -g cordova即可安装到最新版本的cordova 如果要安装指定版本,命令为:npm insta ...
- git设置log的别名 for hist
hist -- alias for 'log --color --graph --date=short --pretty=format:'%Cred%h%Creset -%C(yellow)%d%C ...
- 数据库连接池proxool的两种使用方式
数据库连接池可以通过两种方式来应用,针对web应用和非web应用而来. 非web应用的数据库连接池配置 第一种方式:工厂类 非web应用可以使用工厂模式将数据库连接创建封装在一个工具类中,工具类中又使 ...