编程:求2∧n,n从键盘输入

作者&投稿:钮贺 (若有异议请与网页底部的电邮联系)
编程求n!,n由键盘输入~

这是之前用C 写过的.
#include
#includemain(){int f[10000],a[10000],i,j,k,t,n;while(scanf("%d",&n)!=EOF){memset(f,0,sizeof(f));f[0]=1;for(i=1;i=0;i--){if(f[i]!=0){k=i;break;}}for(i=k;i>=0;i--){printf("%d",f[i]);}printf("
");}}
等下补上一个用Java 写的
//表示一个数字,使用科学计数法。如500表示IntegerString(5,2)
public class IntegerString { private int number = 0;//数字 private int length = 0;//10的length次方 /** Creates a new instance of IntegerString */ public IntegerString(int number,int length) { this.number = number; this.length = length; } public int getNumber(){ return this.number; } public int getLength(){ return this.length; }}
/**
两个数相乘,结果用两个数来表示,一个是高位,一个是低位
**/
public class MultiplyResult { private IntegerString high; private IntegerString low; /** Creates a new instance of MultiplyResult */ public MultiplyResult(IntegerString a,IntegerString b) { int result = a.getNumber()*b.getNumber(); int length = a.getLength()+b.getLength(); if(result>=10){ high = new IntegerString(result/10,length+1); low = new IntegerString(result%10,length); }else{ high = new IntegerString(result,length); low = new IntegerString(0,length-1); } } public String toString(){ //打印方便,以便调试 StringBuffer sb = new StringBuffer(); sb.append(high.getNumber()); sb.append(low.getNumber()); for(int i=0;i<low.getLength();i++) sb.append("0"); return sb.toString(); } public IntegerString getHigh(){ return high; } public IntegerString getLow(){ return low; } }
public class Factorial{
//由大到小,由高到低,将一个字符的数表示成科学计数法private IntegerString[] getIntegerString(String str){ IntegerString[] is = new IntegerString[str.length()]; for(int i=0;i<str.length();i++){ char ch = str.charAt(i); int number = Character.getNumericValue(ch); is[i] = new IntegerString(number,str.length()-1-i); } return is;}
//获得数的最高位 private int getMaxLength(IntegerString[] a){ int max = 0; for(int i=0;imax) max = a[i].getLength(); } return max; }
//一个数与单个数字相乘 private IntegerString[] singleMultiply(IntegerString[] old,IntegerString gene){ MultiplyResult[] mr = new MultiplyResult[old.length]; for(int i=0;i=10){ //如果有进位,取余数,如果没有,取本身 arrays.add(new IntegerString(number%10,i)); carry=1; }else{ arrays.add(new IntegerString(number,i)); carry=0; } } if(carry==1){ //如果还有进位,那么加入到最高位 arrays.add(new IntegerString(carry,maxLength+1)); } IntegerString[] results = new IntegerString[arrays.size()]; java.util.Iterator ii = arrays.iterator(); int index=0; while(ii.hasNext()){ results[index++] = (IntegerString)ii.next(); } return results; }
private void print(IntegerString[] a){ System.out.println(getNumberic(a)); } //将数字由IntegerString[]数组转换成字符串 private String getNumberic(IntegerString[] a){ StringBuffer sb = new StringBuffer(); int max = getMaxLength(a); for(int i=0;i<=max;i++){ boolean isFind = false; for(int j=0;j<a.length;j++){ if(a[j].getLength()==i){ sb.insert(0,a[j].getNumber()); isFind = true; break; } } if(!isFind){ sb.insert(0,0); } } return sb.toString(); }
//两个数相加 private IntegerString[] add(IntegerString[] a,IntegerString[] b){ if(a==null) return b; if(b==null) return a; java.util.ArrayList arrays = new java.util.ArrayList(); int aMax = getMaxLength(a); int bMax = getMaxLength(b); int max = aMax>bMax?aMax:bMax; int carry = 0; for(int i=0;i0){ if(carry>=10){ arrays.add(new IntegerString(carry%10,i)); carry=1; if(i==max){ arrays.add(new IntegerString(carry,i+1)); } }else{ arrays.add(new IntegerString(carry,i)); carry=0; } }else{ arrays.add(new IntegerString(0,i)); carry=0; } } IntegerString[] results = new IntegerString[arrays.size()]; java.util.Iterator ii = arrays.iterator(); int index=0; while(ii.hasNext()){ results[index++] = (IntegerString)ii.next(); } return results; }
//两个数相乘
private String stringMultiply(String a,String b){ IntegerString[] ais = this.getIntegerString(a); IntegerString[] bis = this.getIntegerString(b); IntegerString[] result = null; for(int i=0;i<bis.length;i++){ IntegerString[] tmp = this.singleMultiply(ais,bis[i]); result = add(result,tmp); } return this.getNumberic(result); }
//打印N的阶乘
public void printFactorial(int n){
String total = "1"; int n=100; for(int i=1;i<=n;i++){ total = stringMultiply(i+"",total); }
System.out.println(total);
}
}

int n,sum=0;
cin>>n;
for(int i=1;i<=n;i++){
sum+=i;
}
cout<<sum;

这是之前用C 写过的.
#include<stdio.h>
#include<memory.h>main(){int f[10000],a[10000],i,j,k,t,n;while(scanf("%d",&n)!=EOF){memset(f,0,sizeof(f));f[0]=1;for(i=1;i<n+1;i++){memset(a,0,sizeof(a)); for(t=0;t<10000;t++){ f[t]*=i;if(t!=0) f[t]+=a[t-1]; a[t]=f[t]/10;f[t]%=10;}}for(i=9999;i>=0;i--){if(f[i]!=0){k=i;break;}}for(i=k;i>=0;i--){printf("%d",f[i]);}printf("\n");}}
等下补上一个用Java 写的
//表示一个数字,使用科学计数法。如500表示IntegerString(5,2)
public class IntegerString { private int number = 0;//数字 private int length = 0;//10的length次方 /** Creates a new instance of IntegerString */ public IntegerString(int number,int length) { this.number = number; this.length = length; } public int getNumber(){ return this.number; } public int getLength(){ return this.length; }}
/**
两个数相乘,结果用两个数来表示,一个是高位,一个是低位
**/
public class MultiplyResult { private IntegerString high; private IntegerString low; /** Creates a new instance of MultiplyResult */ public MultiplyResult(IntegerString a,IntegerString b) { int result = a.getNumber()*b.getNumber(); int length = a.getLength()+b.getLength(); if(result>=10){ high = new IntegerString(result/10,length+1); low = new IntegerString(result%10,length); }else{ high = new IntegerString(result,length); low = new IntegerString(0,length-1); } } public String toString(){ //打印方便,以便调试 StringBuffer sb = new StringBuffer(); sb.append(high.getNumber()); sb.append(low.getNumber()); for(int i=0;i<low.getLength();i++) sb.append("0"); return sb.toString(); } public IntegerString getHigh(){ return high; } public IntegerString getLow(){ return low; } }
public class Factorial{
//由大到小,由高到低,将一个字符的数表示成科学计数法private IntegerString[] getIntegerString(String str){ IntegerString[] is = new IntegerString[str.length()]; for(int i=0;i<str.length();i++){ char ch = str.charAt(i); int number = Character.getNumericValue(ch); is[i] = new IntegerString(number,str.length()-1-i); } return is;}
//获得数的最高位 private int getMaxLength(IntegerString[] a){ int max = 0; for(int i=0;i<a.length;i++){ if(a[i].getLength()>max) max = a[i].getLength(); } return max; }
//一个数与单个数字相乘 private IntegerString[] singleMultiply(IntegerString[] old,IntegerString gene){ MultiplyResult[] mr = new MultiplyResult[old.length]; for(int i=0;i<old.length;i++){ mr[old.length-1-i] = new MultiplyResult(old[i],gene); // System.out.println(mr[old.length-1-i]); } //mr是从最低位到最高位 java.util.ArrayList arrays = new java.util.ArrayList(); int carry = 0; int maxLength = mr[mr.length-1].getHigh().getLength(); //获得最高位的长度 for(int i=0;i<=maxLength;i++){//从个位到最高位一次加,如果有进位,那么存放到carry中 int number = carry; for(int j=0;j<mr.length;j++){ if(mr[j].getLow().getLength()==i) { number+=mr[j].getLow().getNumber(); } if(mr[j].getHigh().getLength()==i){ number+=mr[j].getHigh().getNumber(); } } if(number>=10){ //如果有进位,取余数,如果没有,取本身 arrays.add(new IntegerString(number%10,i)); carry=1; }else{ arrays.add(new IntegerString(number,i)); carry=0; } } if(carry==1){ //如果还有进位,那么加入到最高位 arrays.add(new IntegerString(carry,maxLength+1)); } IntegerString[] results = new IntegerString[arrays.size()]; java.util.Iterator ii = arrays.iterator(); int index=0; while(ii.hasNext()){ results[index++] = (IntegerString)ii.next(); } return results; }
private void print(IntegerString[] a){ System.out.println(getNumberic(a)); } //将数字由IntegerString[]数组转换成字符串 private String getNumberic(IntegerString[] a){ StringBuffer sb = new StringBuffer(); int max = getMaxLength(a); for(int i=0;i<=max;i++){ boolean isFind = false; for(int j=0;j<a.length;j++){ if(a[j].getLength()==i){ sb.insert(0,a[j].getNumber()); isFind = true; break; } } if(!isFind){ sb.insert(0,0); } } return sb.toString(); }
//两个数相加 private IntegerString[] add(IntegerString[] a,IntegerString[] b){ if(a==null) return b; if(b==null) return a; java.util.ArrayList arrays = new java.util.ArrayList(); int aMax = getMaxLength(a); int bMax = getMaxLength(b); int max = aMax>bMax?aMax:bMax; int carry = 0; for(int i=0;i<=max;i++){ for(int j1=0;j1<a.length;j1++){ if(a[j1].getLength()==i) carry+=a[j1].getNumber(); } for(int j2=0;j2<b.length;j2++){ if(b[j2].getLength()==i) carry+=b[j2].getNumber(); } if(carry>0){ if(carry>=10){ arrays.add(new IntegerString(carry%10,i)); carry=1; if(i==max){ arrays.add(new IntegerString(carry,i+1)); } }else{ arrays.add(new IntegerString(carry,i)); carry=0; } }else{ arrays.add(new IntegerString(0,i)); carry=0; } } IntegerString[] results = new IntegerString[arrays.size()]; java.util.Iterator ii = arrays.iterator(); int index=0; while(ii.hasNext()){ results[index++] = (IntegerString)ii.next(); } return results; }
//两个数相乘
private String stringMultiply(String a,String b){ IntegerString[] ais = this.getIntegerString(a); IntegerString[] bis = this.getIntegerString(b); IntegerString[] result = null; for(int i=0;i<bis.length;i++){ IntegerString[] tmp = this.singleMultiply(ais,bis[i]); result = add(result,tmp); } return this.getNumberic(result); }
//打印N的阶乘
public void printFactorial(int n){
String total = "1"; int n=100; for(int i=1;i<=n;i++){ total = stringMultiply(i+"",total); }
System.out.println(total);
}
}

#include<stdio.h>
#include<math.h>
int main()
{
    int n,s;
    scanf("%d",&n);
    s=pow(2,n);
    printf("2^%d=%d
",n,s);
return 0;
}



编程:求2∧n,n从键盘输入
include<memory.h>main(){int f[10000],a[10000],i,j,k,t,n;while(scanf("%d",&n)!=EOF){memset(f,0,sizeof(f));f[0]=1;for(i=1;i<n+1;i++){memset(a,0,sizeof(a)); for(t=0;t<10000;t++){ f[t]*=i;if(t!=0) f[t]+=a[t-1]; a[t]=f[t]...

高中数学排列C0n(上0下n)一直加到Cnn,为什么等于2∧n?
若用分类原理,一号盒子中没有小球的放法有cn0种,有一个小球的放法有cn1种,有两个小球的放法有cn2种,有n个小球的放法有cnn种,共有放法cn0+cn1+cn2+…+cnn种显然,两种方法得到的结果相同,所以有cn0+cn1+cn2+…+cnn=2^n。排列的定义:从n个不同元素中,任取m(m≤n,m与n均为自然数...

求证:(2n)!\/2∧n·n!=1·3·5…(2n-1)
( 2n)!\/ (2^n * n!)= { 1*2*3*4*5.*(2n-2)*(2n-1)*(2n) } \/ { 2^n * 1*2*3*4*.*(n-1)*n } = { 1*2*3*4*5.*(2n-2)*(2n-1)*(2n) } \/ { 2*4*6*8*.*(2n-2)*(2n) } = 1*3*5* .*(2n-1)证毕 ...

...M,求当 2 的 N 次方大于等于 M 时,N 的最小值。
for(n=0;x<m;n++) x*=2; printf("N=%d\\n",n); } 更多追问追答 追问 我要VB6语言 追答 问题要早点说清楚 的呀! Private Sub Command1_Click() m = Val(InputBox("m=")) x = 1 Do While x < m x = x * 2 n = n + 1 Loop Print "m="; m, "n="; n End Sub 已赞...

求极限,lim(n→无穷)2∧n\/3∧n;
为什么2\/3的n次方会是0? 追答 0<x<1时,对x^n,n越大,x^n越小,并趋近于0,可以做指数函数图像看一下。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 u无力哀叹丶 2018-07-24 · TA获得超过499个赞 知道小有建树答主 回答量:696 采纳率:64% 帮助的人:192万 我也去答题访问个人...

求数列2∧n\/an的前n项和,an=1\/n
原式化为n*2^n Tn=1*2 +2*2^2 +3*2^3...+(n-1)2^(n-1)+ n2^n 则2Tn= 1*2^2 +2*2^3...+(n-2)2^(n-1)+(n-1)2^n -n2^(n+1)所以 Tn-2Tn=-Tn=2+ 2^1 +2^2 +2^3 + ...+2^(n-1) +2^n - n2^(n+1)={2*(1-2^n)}\/(1-2) - n2^...

已知an=n,bn=2∧n.求数列{an·bn}的前n项和sn
2^(n-1)+n2^n① 2Sn=1×2^2+2×2^3、、、+(n-1)2^n+n×2^(n+1)② ①-②得得 -Sn=2+2^2+2^3、、、+2^n-n2^(n+1)=2(1-2^n)\/(1-2)-n2^(n+1)=2^(n+1)-2-n2^(n+1)=(1-n)2^(n+1)-2 即Sn=(n-1)2^(n+1)+2 求采纳求采纳求采 ...

已知An=2n,bn=2∧n,cn=an×bn,cn为前n项的和,求cn
解:cn=2n*2^n 设cn的前n项和为SnSn=a1b1+a2b2+...+anbn Sn=2^1*2*1+2^2*2*2+..+2^n*2n2Sn= 2^2*2*1+ +2^n*2(n-1)+2^(n+1)*2n两式相减:-Sn=2^1*2+2^2*2+...+2^n*2-2^(n+1)*2n=2(2+2^2+..+2^n)-2^(n+1)*2n=4(2^n-1)-n*...

...结果是有定义的:正确答案对2∧n取模,其中n是用于存储结果_百度...
从题上看这应该是16bit无符号整数,范围是0-65535。那个n表示的是整数的位数,这里n=16.这段话的意思就是如果无符号整数溢出,结果应该是实际的结果对2^n取模。比如65535+1=65536超出了0-65535的范围,所以结果应该是65536%2^16=0

an=2∧n,bn=2n+1,设cn=an×bn,求数列cn的前n项和Tn
..+n.2^(n+1) (2)(2)-(1)S=n.2^(n+1) -(2+2^2+...+2^n)=n.2^(n+1) -2(2^n -1)cn = an.bn =(2n+1)2^n = 2.(n.2^n) +2^n Tn = c1+c2+...+cn =2S + 2(2^n -1)=2n.2^(n+1) -2(2^n -1)=2 +(4n-2).2^n ...

大名县15163946600: 编程:求2∧n,n从键盘输入 -
右郊舒欧: #include#include int main() { int n,s; scanf("%d",&n); s=pow(2,n); printf("2^%d=%d\n",n,s); return 0; }

大名县15163946600: 如何编译个程序求x的n次方,x,n 由键盘输入 -
右郊舒欧: 以下是C语言算法程序#include<stdio.h> void main() { double x,a=1; int i,n,b=1; scanf("%lf%d",&x,&n); for(i=0;i<=n;i++) { a*=b; b=b*10 } printf("%ld",a); }

大名县15163946600: 怎样用java编写程序求n!,并且n的值由键盘输入. -
右郊舒欧: import java.util.Scanner;//递归法求阶乘,eclipse编译通过public class Test {public static void main(String srag[]){int num = 0;while(true){System.out...

大名县15163946600: 编写程序,从键盘输入n,计算并输出如下e=1+1/1!+……+1/n! -
右郊舒欧: #include<stdio.h> double e=1.0; int i=1,n,m=1; printf("input n\n"); scanf("%d",&n); for(i=1;i<=n;i++) {m*=i;e+=1.0/m; } printf("e = %d",e);

大名县15163946600: c语言题目 编程计算s=n! n从键盘上输入 -
右郊舒欧:#include using namespace std; __int64 fac(int n) {if (n==1 || n==0)return 1;return n*fac(n-1); }int main() {int n;cout < cin >> n;cout < return 0; }

大名县15163946600: 用c语言编程实现求1!+2!+3!+...+n!的值,其中n值由键盘输入 -
右郊舒欧: #include <stdio.h>//求n!的值 int func(int n) { if(n == 1) return 1; else return n*func(n-1); } int main() { int n,i,sum=0; printf("输入n的值: "); scanf("%d",&n); if(n<=0) { printf("Input Error!\n"); return -1; } for(i=1;i<=n;i++) { sum+=func(i); } ...

大名县15163946600: 求一个c语言程序,n由键盘输入(n为不大于10的整数). S=(n… (…+(6*(5+(4*(3+(1*2))) -
右郊舒欧: #include<stdio.h> void main() {int n,i,s;s=1;printf("please input n:");scanf("%d",&n);for(i=2;i<=n;i++){if(i%2==0)s=s*i;elses=s+i;}printf("the result is: %d\n",s); } 这种数组题要学着找规律,然后用循环很简单的,建议把教材上的程序都敲敲,自己再多思考,不难的

大名县15163946600: matlab编程求1+2+3+…+n的和,要求键盘输入n的值. -
右郊舒欧: n=1; while n>0 s=input('请输入一个数( 0 退出):','s'); n=str2num(s);sum(1:n) end

大名县15163946600: 编程求n!,n由键盘输入 -
右郊舒欧: 这是之前用C 写过的.#include<stdio.h>#include<memory.h>main(){int f[10000],a[10000],i,j,k,t,n;while(scanf("%d",&n)!=EOF){memset(f,0,sizeof(f));f[0]=1;for(i=1;i<n+1;i++){memset(a,0,sizeof(a)); for(t=0;t<10000;t++){ f[t]*=i;if(t!=0) f[t]+=a[t-1]; a[t]=f[t...

大名县15163946600: 用编程求n!,n由键盘输入,且用实型编写,如何实现?
右郊舒欧: #include <iostream.h> void main() { double n; double sum=1; cout<<"input a number"<<endl; cin>>n; while (n!=1) { sum=sum*n; n--; } cout<<"the answer is :"<<sum<<endl; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网