首页 > 其他分享 >高次方的尾数

高次方的尾数

时间:2023-05-26 23:12:45浏览次数:42  
标签:13 last 乘积 尾数 相乘 三位 次方

1.问题描述
求13的13次方的最后三位数。
2.问题分析
  许多初学者看到本题最容易想到的方法就是:将13累乘13次后截取最后三位即可。但是计算机中存储的整数有一定的范围,超出某范围将不能正确表示,所以用这种算法不可能得到正确的结果。实际上,题目仅要求后三位的值,完全没有必要把13的13次方完全求出来。
3.算法设计
手工计算13的13次方的步骤如下:

13*13=169

169*13=2197

2197*13=18561

…… …… ……

  …………研究乘法的规律会发现:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。利用这一规律,在计算下一次的乘积时,我们只需用上次乘积的后三位来参与运算(即在求第三次乘积时,上次的乘积2197并不需要都参与运算,只取其后三位197再次与13 相乘即可)。求某数的后三位的算法用某数对1000取模。
  编程过程中,将累乘得到的积存储到变量last 中,在进行下一次相乘之前先截取last的后三位再相乘,即:last%1000*13,将结果存储到last中:1
last=last∗x
(x的值为13)%1000。因第一次相乘时用到变量last的初值,故在定义时给last 赋初值,或在参与计算之前给last赋初值1。

4.程序流程图

 

5.代码实现

#include<stdio.h>
main()
{
int i,x,y,last=1;
printf("Input x and y:\n");
scanf("%d %d",&x,&y));
for(i=1;i<=y;i++)
last=last*x%1000;
printf("The last there digits is:%d\n",last);
}

 

标签:13,last,乘积,尾数,相乘,三位,次方
From: https://www.cnblogs.com/jais/p/17436034.html

相关文章

  • N的多次方
    描述编写一个程序,计算输入数字N的0次方到5次方结果,并依次输出这6个结果,输出结果间用空格分隔。其中:N是一个整数或浮点数。print()函数可以同时输出多个信息,采用如下方法可以使用空格对多个输出结果进行分割:print(3.14,1024,2048)print(3.14,1024,2048)本平台可以通过input()函......
  • 高次方数尾数
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>main(){ intn=13,i; for(i=1;i<=12;i++) { /*n=(n*3+n%100*10)%1000;*/ n=n*13%1000; } printf("%d",n);}......
  • 3.7 高次方数的尾数
    #include<stdio.h>intmain(){inti,x,y,last=1;/★变量last保存求得的×的y次方的部分积的后三位*/printf("Inputxandy:An");scanf("%dSd",&x,&y);for(i-1;i<=y;i++)/*×自乘的次数y*/last=last*x%1000;/*将last乘x后对1000取模,即求积的后三位*/printf(&q......
  • 高次方的尾数
    自然语言解决问题:许多初学者看到本题最容易想到的方法就是:将13累乘13次后截取最后位即可。但是计算机中存储的整数有一定的范围,超出某范围将不能正确表示,所以用这种算法不可能得到正确的结果。实际上,题目仅要求后三位的值,完全没有必要把13的13次方完全求出来流程图: ......
  • 高次方数的尾数
    一问题描述求出13的13次方的在最后三位数二设计思路因为int型不能存储那么大的数所以我们只算后几位的乘法将每次相乘保留三位数然后再与13想乘一直循环直到13次。三程序流程图 四伪代码实现#include<iostream>usingnamespacestd;intmain(){intx=13,a=1;for(inti......
  • 高次方数的尾数
    一问题描述求13的13次方的后三位尾数二设计思路因为数过大后,数据无法存储,所以要看乘法得数后三位的规律,发现只与乘数的后三位有关。那么从第一次开始,每次*13之前先取后三位。三程序流程图 四伪代码实现#include<bits/stdc++.h>usingnamespacestd;intmain(){ inta=13; for......
  • 快速幂:剑指 Offer 16. 数值的整数次方
    题目描述:实现 pow(x, n) ,即计算x的n次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。  解题思路:   classSolution{publicdoublemyPow(doublex,intn){if(x==0.0)return0;longb=n;doubleres=1;......
  • 最少硬币支付问题 c的幂次方证明
    假设硬币的面值为\(c^0,c^1,...,c^k\),其中c是一个大于1的整数,k是一个大于等于1的整数。设\(a_i\)是找n分钱的最优解中面值\(c^i\)的硬币的数量,那么对于\(i=0,1,...,k-1\),有\(a_i<c\)。这是因为如果\(a_i>=c\),那么可以用一个面值\(c^{i+1}\)的硬币替换c个面值\(c^i\)的硬币,......
  • HashMap的数组长度为何必须是2的n次方
    扩容方便,数字位移计算方便效率高;计算元素下标使用的方式是key的hash&(数组length-1),由于length是2^n,转换成二进制后2^-1最低位就全部都是1,比如111,就相当于是数组长度的掩码,那么hash&111就可以将数组的每一位都覆盖,加入数组长度不是2^n,那么length-1低位不全是1,比如101,那么h......
  • AC.790 数的三次方根
    AC.790数的三次方根题目描述\(给定一个浮点数n,求它的三次方根。\)输入格式\(共一行,包含一个浮点数n。\)输出格式\(共一行,包含一个浮点数,表示问题的解。注意,结果保留6位小数。\)数据范围\(−10000≤n≤10000\)输入样例1000.00输出样例10.000000......