编程练习:求某个数的n次方,返回其个位和十位

 1 #!/usr/bin/env python
 2
 3 def pow1(n,m):
 4         if m==0:        return 1
 5         if m==-1:       return (1/n)
 6         if m & 1 != 0:
 7                 return int(str(n * pow1(n, m-1))[-2:])
 8         else:
 9                 return int(str(pow1(n*n, m>>1))[-2:])
10
11 if __name__ == "__main__":
12         print(pow1(2,2))
时间: 2024-12-24 09:29:29

编程练习:求某个数的n次方,返回其个位和十位的相关文章

计算一个数的n次方

#include <iostream> #include <cmath> /// 数学函数必不可少. using namespace std; int main() { double a,x; /// a为底数,x为幂 while(cin>>a>>x) { cout<<pow(a,x)<<endl; /// 注意若求一个数的小数次方,则x一定要加小数点. } } 在定义a,x的类型时,最好定义为double型,以免发生错误.

编程题:返回指针值的函数,求两个数中较大的数。

#include<stdio.h> int *max(int *x,int *y) { int *q; if(*x>*y)  q=x; else  q=y; return q; } void main() { int a,b,*p; scanf("%d,%d",&a,&b); p=max(&a,&b); printf("%d,%d,max is %d\n",a,b,*p); } 编程题:返回指针值的函数,求两个数中较

编程题:用函数调用实现,求两个数中的最小数。

#include<stdio.h> void main() { float min(float x,float y);  /*函数定义在调用的函数之后,要先声明*/ float a=3,b=4.1; printf("%.1f\n",min(a,b)); printf("%.1f\n",min(5,a*b)); printf("%.1f\n",min(b-1,min(a,b))); } float min(float x,float y

编程题:指向函数的指针,求两个数中较大的数。

#include<stdio.h> int max(x,y) { int z; if(x>y)  z=x; else  z=y; return z; } void main() { int a,b,c; int (*p)(); p=max; scanf("%d,%d",&a,&b); c=(*p)(a,b); printf("%d,%d,max is %d\n",a,b,c); } 编程题:指向函数的指针,求两个数中较大的数.,布布

求一个数二进制中1的个数(优化)。判断一个数是不是2的n次方

求一个数二进制中1的个数: 一般方法: #include<stdio.h> #include<stdlib.h> int   count_one_bits(unsigned int value) { int count = 0; for (int i = 0; i < 32; i++) { if (value & 1 == 1)      (%2相当于&1) { count++; } value = value >> 1;      (右移一位相当

C语言编程 求两个数的平均值方法(三种方法)

第一种方法是最常见的average=(a + b) / 2这种方式,求两个数的平均值 第二种方法是当 a<b 时averag=a+(b-a)/2 这里着重介绍的是第三种方法 average=(a&b) + (a^b)>>1 推导过程如下a + b = (a&b) 2 + (a^b)) --->average=((a&b)2+(a^b))/2 ---->average=(a&b) + (a^b)>>1 eg:两个数为15和515二进制

求N个数的最大公约数和最小公倍数

除了分解质因数,还有另一种适用于求几个较小数的最大公约数.最小公倍数的方法 下面是数学证明及算法实现 令[a1,a2,..,an] 表示a1,a2,..,an的最小公倍数,(a1,a2,..,an)表示a1,a2,..,an的最大公约数,其中a1,a2,..,an为非负整数.对于两个数a,b,有[a,b]=ab/(a,b),因此两个数最小公倍数可以用其最大公约数计算.但对于多个数,并没有[a1,a2,..,an]=M/(a1,a2,..,an)成立,M为a1,a2,..,an的乘积.例如:[2,

N个数的数组求N-1个数组合乘积最大的一组

1 /* 2 编程之美题,给定N个数的数组,只能使用乘法,不使用除法,找出N-1个数的乘积最大的一组,有两种方法,方法一:采用两个数组分别保存从左向右 3 和从又向左的两个乘积值,然后在扫描一次,求出最大乘积,空间换时间的方法. 4 方法二:通过分析这些数的性质,看有多少正数,多少负数,多少0 5 (1)如果有2个或2个以上的0,则返回0 6 (2)如果有一个0,则看去除0后的乘积为正数还是负数,如果是负数,最大值为0,返回0(即当有一个0时,看负数奇偶情况,如果负数个数是奇数,则返回0) 7

LightOj1024 - Eid (求n个数的最小公约数+高精度)

题目链接:http://lightoj.com/volume_showproblem.php?problem=1024 题意:给你n(2<=n<=1000)个数, 然后求n个数的最小公倍数,每个数的大小是1---10000;所以答案会很大,可能达到1000个4位数相乘:所以结果很大,将近4000位; 所以一定会涉及到高精度运算:同时我们也不能直接循环求最小公倍数:我们可以把一个数分解成多个质数相乘,然后找到所有数中,出现的质数最多的那个对应的次方,然后再把结果乘起来即可; 例如样例 4 5 6