hdu1212 Big Number &第六届山东省赛Single Round Math (同余定理,大数取模)

题目链接Big Number

题目大意:每次输入两个数,第一个是高精度,第二个数小于100000;求 a mod b

根据同余定理:

(a+b)% c = (a%c+ b%c)%c

(a*b)%c =  ( a%c* b%c)%c

所以 对于大数,例如 :123 可以这样分解

123 =  (1*10+2)*10 + 3;

123 % c =   (  (  (  1%c *  10%c)%c + 2%c) %c  * 10%c) + 3 %c  ) %c;

因此,我们用字符串处理这个数,通过循环解出最终的余数;

【代码如下】

#include <iostream>
using namespace std;
int main()
{
    string a;
    int b;
    while(cin>>a>>b)
    {
        int len=a.length();
        int ans=a[0]-48;
        if(len>1)
        {    for(int i=1;i<len;i++)
            {
                ans=((ans*10)+a[i]-48)%b;
            }
            cout<<ans<<endl;
        }
        else
        {
            int ans=(a[0]-48)%b;
            cout<<ans<<endl;
        }
    }
    return 0;
}

有了这个方法,笔者又去做了一遍第六届山东省赛的Single Round Math

题目链接 Single Round Math

题目要求: 输入两个数,判断其是否相等 如果相等,再判定是否能够整除11,如果可以输出YES 否则输出NO;

#include <cstring>
#include <string>
#include <iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string a="",b="";
    while(n--)
    {
        cin>>a>>b;
        if(a==b)
        {
            int len=a.length();
            int ans=a[0]-48;
            for(int i=1;i<len;i++)
            {
                ans=(ans*10+a[i]-48)%11;
            }
            if(ans==0)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
        else
            cout<<"NO"<<endl;
    }
    return 0;
}   

第一次做这个题 是找到了规律-- 11的倍数是有规律的

就是如果一个数“奇数位” 的和,和 这个数“偶数位”的和的差 能够整除11,那么这个数就能整除11;

abs(num【奇数】-num【偶数】)%11==0

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		string a="",b="";
		cin>>a>>b;
		if(a==b)
		{
			int cnt1=0;
			int cnt2=0;
			int len=a.length();
			for(int i=0;i<len;i++)
			{
				if(i%2)
					cnt1+=(a[i]-48);
				else
					cnt2+=(a[i]-48);
			}
			if((int)(abs(cnt1-cnt2))%11==0)
				cout<<"YES"<<endl;
			else
				cout<<"NO"<<endl;
		}
		else
			cout<<"NO"<<endl;
	}
	return 0;
}
时间: 2024-10-15 01:31:22

hdu1212 Big Number &第六届山东省赛Single Round Math (同余定理,大数取模)的相关文章

第六届山东省赛总结贴

省赛结束快两个星期辣,原谅弱到现在才写总结,拖延症晚期路过(逃. 其实觉得自己挺幸运的,省赛前因为各种原因和FF and +才组队,然后瞬间抱上大腿,完美蜕变,成为一名辅助,走上人生巅峰. 一群不会起名字的BD,在FF偶尔听到的一首歌里我们选了呢个乐队的名字Dreamtale(梦境传说,瞬间像磕了药一样,精神抖擞.当时距离省赛还有两个月不到的时间,为了磨合也是锻炼,每周四下午都要打一场比赛,加上周六的比赛,一周双开.其实初学当一名辅助也是很坎坷的,开始周四做的是往年省赛的题目,初学辅助有的细节方

NYOJ-682 小媛在努力 (郑大第六届校赛 模拟)

链接:click here 题意: 描述 在多媒体数据处理中,数据压缩算法尤为重要.小媛上完课后就想自己发明一个数据压缩算法.她想呀想,终于想到一个方法.在多媒体数据中有很多数据都是重复的,所以她想把连续相同的数据用数据出现的次数和数据本身表示.例如:1 1 1 2 3 3 3 3 3  压缩后及为3 1 1 2 5 3(表示3个1,1个2和5个3).有想法后小媛就希望把它用代码实现了.但是大家都知道小媛现在整天都忙着苦B的复习考研,连电脑都摸不到.所以她希望作为ACMer的你帮她写一下. 输入

郑轻第六届校赛 -- 部分题解

1427: 数字转换 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 379  Solved: 93 SubmitStatusWeb Board Description 老师交给小明一个任务,有两个数字x和y(x<y),通过以下两种操作:一.将x乘以2:二.将x的值加上1.小明希望能通过尽可能少的操作来完成这个任务,但是不知道怎么做,现在请大家来帮帮他的忙吧. Input 两个整数x,y(0<=x<y<=10^6). Output 一

2016湖南省赛----A 2016 (同余定理)

2016湖南省赛----A 2016 (同余定理) Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数. Input 输入包含不超过 30 组数据. 每组数据包含两个整数 n,m (1≤n,m≤10 9). Output 对于每组数据,输出一个整数表示满足条件的数量. Sample Input 32 63 2016 2016 1000000000 1000000000 Sample

湖南省第六届省赛题 Biggest Number (dfs+bfs,好题)

Biggest Number 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 You have a maze with obstacles and non-zero digits in it: You can start from any square, walk in the maze, and finally stop at some square. Each step, you may only walk into one of the four neighb

HDU 1212 Big Number(C++ 大数取模)(java 大数类运用)

Big Number 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1212 --每天在线,欢迎留言谈论. 题目大意: 给你两个数 n1,n2.其中n1 很大很大,n1%n2的值. 知识点: ①秦九韶公式:例:1314= ((1*10+3)*10+1)*10+4 ②(a*b)%c == (a%c)*(b%c) .(a+b)%c == (a%c)+(b%c) . 思路: 每步取模即可. C++ AC代码: 1 #include <iostream>

山东省第六届省赛 H题:Square Number

Description In mathematics, a square number is an integer that is the square of an integer. In other words, it is the product of some integer with itself. For example, 9 is a square number, since it can be written as 3 * 3. Given an array of distinct

SDUT 2152 Balloons(BFS 第一届山东省赛)

Balloons Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Both Saya and Kudo like balloons. One day, they heard that in the central park, there will be thousands of people fly balloons to pattern a big image. They were very interested about

SDUT 2158 Hello World!(第一届山东省赛)

Hello World! Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 We know that Ivan gives Saya three problems to solve (Problem F), and this is the first problem. "We need a programmer to help us for some projects. If you show us that you or on