3085 相同的后三位

3085 相同的后三位

时间限制: 1 s

空间限制: 256000 KB

题目等级 : 青铜 Bronze

题目描述 Description

对于给定的p,编写程序求最小正整数m,n(0<n<m)为何值时,pm与pn的最后三位数字相同。

输入描述 Input Description

一个正整数p(100≤p≤9999)

输出描述 Output Description

一行,最小的m和n,m和n用空格隔开。如有多组,输出最小的m那组。

样例输入 Sample Input

100

样例输出 Sample Output

3 2

数据范围及提示 Data Size & Hint

100≤p≤9999

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 using namespace std;
 5 int f(int x,int n)
 6 {
 7     int now=1;
 8     while(n)
 9     {
10         if(n&1)
11         {
12             now=now*x%1000;
13         }
14         x=x*x%1000;
15         n>>=1;
16     }
17     return now%1000;
18 }
19 int main()
20 {
21     int p;
22     cin>>p;
23     for(int i=1;i<=1000;i++)
24     {
25         for(int j=1;j<=i;j++)
26         {
27             int x=f(p,i);
28             int y=f(p,j);
29             if(x==y&&i!=j)
30             {
31                 cout<<i<<" "<<j;
32                 return 0;
33             }
34         }
35     }
36     return 0;
37 }
时间: 2024-08-05 07:07:08

3085 相同的后三位的相关文章

求斐波那契数列的相邻两项的比值,精确到小数后三位。

未完成,只能假设知道是9和10代入. 代码如下: package zuoye; import java.math.BigDecimal; /* * 求斐波那契数列的相邻两项的比值,精确到小数后三位. * p1,p2,p3......pi,pj,...求pi/pj * 1 1 2 3 5 8 13 * 5/8,8/13,...收敛 */ public class Test { static double feibo(int x){ if(x==1||x==2) return 1; return f

求随机数,按后三位排序

编写程序实现以下功能:    //随机产生20个正整数存入数组a中,且每个数均在1000-9999之间(包含1000和9999).对数组进行排序,要求按每个数的后三位的大小进 行升序排列,然后取出满足此条件的前10个数放入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列.最后输出数组b的内容 #import <Foundation/Foundation.h>int value(int x){ //如何求出5609 的后三位数    int y = x /1000;    int c

UVA - 11029Leading and Trailing(快速幂取模取后三位 + log10()取前三位)

题目: UVA - 11029Leading and Trailing(快速幂取模取后三位 + log10()取前三位) 题目大意:给你N的k次方,然后要求你求出这个数的前三位和后三位. 解题思路:因为n和k都很大,这个数求出来是大数,所以可以用快速幂取模求后三位,因为后面的三位和前面的位数的没有关系.前面的三位比较难办.设x = log (n^k)  = k * log10(n),那么10^x = k * log10(n).将X = a(整数) + b(小数),整数部分10^a只是移动小数点,

LightOJ 1282 - Leading and Trailing (求n的k次方的前三位数字 后三位)

题意:http://www.lightoj.com/volume_showproblem.php?problem=1282 n^k = a.bc * 10.0^m:等式两边同时加上log10k*log10(n) = log10(a.bc) + m;m为k * log10(n)的整数部分,log10(a.bc)为k * lg(n)的小数部分;x = log10(a.bc) = k*log10(n) - m = k*log10(n) - (int)k*log10(n);x = pow(10.0, x

一个简单的时间片轮转多道程序内核代码分析 (学号后三位418)

一.基于mykernel的基本Linux内核分析 1.我们按照老师在github上给出的步骤在实验楼上启动最高小内核,可以看到如下现象 在窗口中我们可以看到一个内核以及运行起来了,比较简单的内核,只时不停的输出一些字符串,>>>>>>my_time_handler here<<<<<<<和my_start_kernel here和一些计数.这时因为我们并没有加入其他的代码,再次基础上我们可以加入我们主机要实现的功能. 在myin

函数FUN功能,计算n的5次方的值(规定N的值大于2且小于8),通过形参指针传回主函数,并计算该值的个位、十位、百位上数字之和作为函数值返回,例如7的5次方是16807后三位和为15

#include <stdio.h>#include <math.h>int fun(int n,int *value){ int d,s,i;d=1;s=0; for(i=1;i<=5;i++) d=d*n; *value=d; for(i=1;i<=3;i++) { s=s+d%10;d=d/10; } return s;} void main(){ int n,sum,v; do { printf("\n Enter n(2<n<8):&qu

13.任意次方后的后三位

#include <stdio.h> int main(int argc, char *argv[]) { int x,y,a = 1; printf("input x y(x^y):"); scanf("%d %d",&x,&y); int i; for(i = 1;i<=y;i++) { a=a*x; } printf("%d\n",a); int x1,x2,x3; x1 = a-(a/10)*10; x2

mysql考生号后三位对出密号

select mihao,substring(t1.kaohao, -3)  from t_zhaosheng_zhiyuan as t1 where substring(t1.kaohao, -3)  in ('030','106') order by field(substring(t1.kaohao, -3) ,'192','030','106'); 原文地址:https://www.cnblogs.com/littlehb/p/11517380.html

Uva 11029 Leading and Trailing (求n^k前3位和后3位)

题意:给你 n 和 k ,让你求 n^k 的前三位和后三位 思路:后三位很简单,直接快速幂就好,重点在于如何求前三位,注意前导0 资料:求n^k的前m位 博客连接地址 代码: #include <iostream> #include <cmath> #include <cstdio> #include <algorithm> #define ll long long using namespace std; ll qmod(ll a,ll b,ll mod)