hdu 5050 大数
http://acm.hdu.edu.cn/showproblem.php?pid=5050
大数模板最大公约数
信kuangbin,能AC
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <queue>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define clr0(x) memset(x,0,sizeof(x)) const int maxn = 1010; struct Num
{
int num[1100];
}; void print(const Num &hold)
{
int k; for (k = maxn; k >= 0; k --)
if (hold.num[k])
break; for (int i = k; i >= 0; i --)
printf("%d", hold.num[i]);
} Num operator+(const Num &a, const Num &b)
{
Num ret;
int temp; clr0(ret.num); for (int i = 0; i <= maxn; i ++)
{
temp = ret.num[i]; ret.num[i] = (temp + a.num[i] + b.num[i]) % 2;
ret.num[i + 1] = (temp + a.num[i] + b.num[i]) / 2;
} return ret;
} bool operator==(const Num &a, int num)
{
for (int i = 0; i <= maxn; i ++)
if (a.num[i] != num)
return false; return true;
} bool operator<(const Num &a, const Num &b)
{
for (int i = maxn; i >= 0; i --)
{
if (a.num[i] < b.num[i])
return true;
else if (a.num[i] > b.num[i])
return false;
} return true;
} Num Complement(Num hold)
{
char str[1100];
Num ret, temp; strcpy(str, "1"); clr0(temp.num);
int bit = 0,lls = strlen(str);
for (int i = lls - 1; i >= 0; i --)
temp.num[bit ++] = str[i] - '0'; ret = hold; for (int i = 0; i <= maxn; i ++)
{
if (ret.num[i])
ret.num[i] = 0;
else
ret.num[i] = 1;
} ret = ret + temp; return ret;
} Num operator-(const Num &a, const Num &b)
{
Num c, ret; c = Complement(b); ret = a + c; return ret;
} Num operator/(const Num &hold, int num)
{
Num ret; clr0(ret.num); for (int i = 0; i < maxn; i ++)
ret.num[i] = hold.num[i + 1]; return ret;
} int operator%(const Num &hold, int num)
{
return hold.num[0];
} Num gcd(Num a, Num b, int &counter)
{
while (true)
{
if (a < b)
swap(a, b); if (b == 0)
break; if (a % 2 == 0 && b % 2 == 0)
{
counter ++; a = a / 2;
b = b / 2;
}
else if (a % 2 == 0 && b % 2 != 0)
{
a = a / 2;
b = b;
}
else if (a % 2 != 0 && b % 2 == 0)
{
a = a;
b = b / 2;
}
else
{
a = a - b;
b = b;
}
} return a;
} int main()
{
int _;RD(_);
char ta[1100], tb[1100];
int counter;
Num a, b, ans ;
int bit,cas = 1;
while (_--)
{
printf("Case #%d: ",cas++);
scanf("%s%s", ta, tb); int lla = strlen(ta),llb = strlen(tb); clr0(a.num);
bit = 0;
for (int i = lla - 1; i >= 0; i --)
a.num[bit ++] = ta[i] - '0';
clr0(b.num);
bit = 0;
for (int i = llb - 1; i >= 0; i --)
b.num[bit ++] = tb[i] - '0'; counter = 0;
ans = gcd(a, b, counter); print(ans); while(counter--)
printf("0"); puts("");
} return 0;
}
hdu 5050 大数的更多相关文章
- HDU 5050
http://acm.hdu.edu.cn/showproblem.php?pid=5050 大数gcd import java.io.* ; import java.math.* ; import ...
- HDU - 5050 (大数二进制gcd)
It's time to fight the local despots and redistribute the land. There is a rectangular piece of land ...
- hdu 5050 java程序求大数最大公约数
import java.io.*; import java.math.*; import java.util.*; import java.text.*; public class Main { pu ...
- hdu 1002大数(Java)
A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu 5047 大数找规律
http://acm.hdu.edu.cn/showproblem.php?pid=5047 找规律 信kuangbin,能AC #include <stdio.h> #include & ...
- hdu 4759 大数+找规律 ***
题目意思很简单. 就是洗牌,抽出奇数和偶数,要么奇数放前面,要么偶数放前面. 总共2^N张牌. 需要问的是,给了A X B Y 问经过若干洗牌后,第A个位置是X,第B个位置是Y 是不是可能的. Ja ...
- HDU 1018 大数(求N!的位数/相加)
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- HDU 4927 大数运算
模板很重要 #include <cstdio> #include <cstring> #include <cstdlib> #include <iostrea ...
- HDU 5050 Divided Land(进制转换)
题意 给你两个二进制数m,n 求他们的最大公约数 用二进制表示 0<m,n<2^1000 先把二进制转换为十进制 求出最大公约数 再把结果转换为二进制 数比較大要用到大数 ...
随机推荐
- 6.26实力测试(小错笑cry)
6.26测试 本次考试的粗心不忍吐槽(自带贴吧喷水表情),本次考试主要考察的知识点如下: 算法的分析与精简 暴力枚举输出字符 判断与枚举的综合考察 题目 第一题 [问题描述] 在一口井里,有一只神牛( ...
- AWVS基本用法
https://www.bugbank.cn/q/article/5983de41cbb936102d397781.html
- LFI/RFI总结
目录 0×01 文件包含简介 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间.这意味着您可以创建供所有网页引用的标准页眉或菜单 ...
- 设计师都爱用的UI标注软件有哪些?
UI标注软件现在是设计师(UI.PM.前端等)必备的一款软件.设计稿是UI设计师日常工作中的产出物之一,当然,做出了高保真设计稿并不意味着你的工作结束了,因为你还得与下游的开发工程师进行对接. 我们经 ...
- MyEclipse Server view报错解决方法
MyEclipse Server view报错解决方法 方法/步骤 启动MyEclipse,弹出一个框,报错. ---------------------------------------- ...
- 旅行家的预算(NOIP1999&水题测试2017082301)
题目链接:旅行家的预算 这题还可以,不算太水. 这题贪心即可. 我们采取如下动作: 如果在装满油的情况下能到达的范围内,没有加油站,则无解. 如果在装满油的情况下能到达的范围内,油价最低的加油站的油价 ...
- Java第11章笔记
什么是类,什么是对象 举例说明什么是类,什么是对象? 一句话:万物皆对象 类的概念:类是具有相同属性和服务的一组对象的集合. 1.为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个部分 ...
- sql number类型和varchar2类型
查询时,发现org_id 为number类型,zone_id为varchar2类型,需要转化 转换 to_char(),或者to_number select a.id,b.col,a.col from ...
- 2018.12.17 bzoj3667: Rabin-Miller算法(Pollard-rho)
传送门 Pollard−rhoPollard-rhoPollard−rho板题. 题意简述:给出几个数,让你判断是不是质数,如果不是质数就求出其最大质因子,数的大小为1e181e181e18以内. 先 ...
- Pappus一阶矩公式