hdoj 1097 A hard puzzle (找规律)

A hard puzzle

                           T   ime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 29231    Accepted Submission(s): 10494

Problem Description

lcy gives a hard puzzle to feng5166,lwg,JGShining and Ignatius: gave a and b,how to know the a^b.everybody objects to this BT problem,so lcy makes the problem easier than begin.

this puzzle describes that: gave a and b,how to know the a^b‘s the last digit number.But everybody is too lazy to slove this problem,so they remit to you who is wise.

Input

There are mutiple test cases. Each test cases consists of two numbers a and b(0<a,b<=2^30)

Output

For each test case, you should output the a^b‘s last digit number.

Sample Input

7 66
8 800

Sample Output

9
6

AC  CODE:

#include<stdio.h>
int main()
{
	int a,b;
	while(~scanf("%d%d",&a,&b))
	{
		int i,temp,m,ans;
		a%=10;
		ans=a;
		for(i=1;i<b;i++)
		{
			ans*=a;
			ans%=10;
			if(ans==a)
			{
				//printf("%d#",i);
				temp=i;
				m=(b-1)%temp;
				for(i=0;i<m;i++)
				{
					ans*=a;
					ans%=10;
				}
				break;
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}

更简洁代码:

#include<stdio.h>
main()
{
    int a,b,c;
    while(~scanf("%d%d",&a,&b))
    {
        b%=4;a%=10;c=a;
        if(b==0)
        b=4;
        while(--b)
        c=c*a%10;
        printf("%d\n",c);
    }
}

两代码原理都一样,就是循环每次相乘得到结果的个位只与上次相乘的两个数的个位有关,而个位只有0~9这十个数,只需循环过程中对上次相乘的两个数都取余相乘再取余就能得到正确结果。拿34 100这对数据举例,其实只需计算4的100次方就行,但4的100次方也还是太大,计算机没有整型类型装的下,所以,可以4*4=16,对16取余得6再去乘4,这样连续运算100就能得到结果。

但提交后会发现出现TEL错误。原因在于0<b<=2^30,若b=2^30,必然花大量的时间重复循环,导致提交出现TEL。

其实可以通过找规律发现0~9最多连乘4次就会回到自身数值,例如,2连乘4个2为2*2*2*2*2=32,32对2取余得2,又回到数值2本身。所以,很多的循环是不必要重复的,只需b对4取余,再进行循环就能得到结果。这是第二个程序的中心思想。

hdoj 1097 A hard puzzle (找规律)

时间: 2025-01-14 14:57:32

hdoj 1097 A hard puzzle (找规律)的相关文章

hdoj 1097 A hard puzzle 【找规律】

题目大意:求a^b的最右边的数. 这道题是有规律的 解题报告: http://blog.csdn.net/shengweisong/article/details/38024619  但是注意数据很大,要用64位的整型,被坑了一次.. 题目链接:点击打开链接 代码: #include<stdio.h> int main() { __int64 n, m, i; while(scanf("%I64d%I64d", &n, &m) == 2){ __int64

HDOJ 1097 A hard puzzle

Problem Description lcy gives a hard puzzle to feng5166,lwg,JGShining and Ignatius: gave a and b,how to know the a^b.everybody objects to this BT problem,so lcy makes the problem easier than begin.this puzzle describes that: gave a and b,how to know

HDOJ 5351 MZL&#39;s Border 找规律

打出前i个串的kmp的fail指针: p: ab 0 0 0 p: aba 0 0 0 1 p: abaab 0 0 0 1 1 2 p: abaababa 0 0 0 1 1 2 3 2 3 p: abaababaabaab 0 0 0 1 1 2 3 2 3 4 5 6 4 5 p: abaababaabaababaababa 0 0 0 1 1 2 3 2 3 4 5 6 4 5 6 7 8 9 10 11 7 8 p: abaababaabaababaababaabaababaabaab

HDOJ 1248 寒冰王座(找规律)

[思路]:找规律,参考的别人的,自己写的挂了.http://blog.csdn.net/appte/article/details/8227632 [AC代码]: #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; int main() { //freopen("in.txt", "r&q

HDOJ 2582 f(n) (YY+找规律)

题意 Gcd(n)=gcd(C[n][1],C[n][2],--,C[n][n-1]) f(n)= Gcd(3)+Gcd(4)+-+Gcd(i)+-+Gcd(n). 求f(n). 思路 刚开始在gcd()的地方想消一下公式看看,发现Gcd(n)好像就等于n,然后python算了一下第二个样例发现不对,后来考虑可能有质因子的话会使gcd更小,就打了一个表,然后发现一共有三种情况: 1.如果n是素数,Gcd(n) = n 2.如果n是有唯一质因子,Gcd(n) = p 3.如果n有多个质因子,Gcd

找规律/数位DP HDOJ 4722 Good Numbers

题目传送门 1 /* 2 找规律/数位DP:我做的时候差一点做出来了,只是不知道最后的 is_one () 3 http://www.cnblogs.com/crazyapple/p/3315436.html 4 数位DP:http://blog.csdn.net/cyendra/article/details/11606209 5 */ 6 #include <cstdio> 7 #include <iostream> 8 #include <algorithm> 9

hdoj 2277 Change the ball 【找规律】

题目大意:有三不同颜色的球(yellow,blue, red),每两个不同颜色的球在一起就会变成剩下的种的颜色,例如,1个y,1个b 在一起就变成了两个r的.求能不能将给出的三种颜色的球都变成同一种颜色,如果能输出最少的转换步数. 策略:这道题假设有相同的那么显然就是相同的数目,如果没有相同的,如果能转化同一个颜色,那么必有(s - n)%3 == 0,即两种颜色的球的个数差,是3的倍数(仔细想一下),所以 我们排一下序,依次判断就可以了 题目链接 点击打开链接 代码: #include<std

HDOJ 题目4349 Xiao Ming&#39;s Hope(找规律)

Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1515    Accepted Submission(s): 1015 Problem Description Xiao Ming likes counting numbers very much, especially he is fond of co

hdoj 2047 阿牛的EOF牛肉串 【找规律】

这道题再一次证明找规律真不是我的强项.... 阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20312    Accepted Submission(s): 9528 Problem Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做EOF的队伍,由04级的阿牛.XC以及05级