zoukankan      html  css  js  c++  java
  • 基本大数问题

     1 //N!
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cstring>
     5 #define ll long long 
     6 #define  M 100000000
     7 #define  N  50000//根据数据量选择
     8 using namespace std;
     9 ll n;
    10 ll  a[N];//要用ll
    11 void solve(ll n)
    12 {
    13     memset(a,0,sizeof(a));
    14     a[0]=1;
    15     ll m=0;
    16     for(ll i=1;i<=n;i++)
    17     {
    18         for(ll j=0;j<=m;j++){
    19             a[j]*=i;//可能会超int
    20             if(j>=1&&a[j-1]>=M){
    21                 a[j]+=a[j-1]/M;
    22                 a[j-1]%=M;
    23             }
    24             if(a[m]>=M) m++;
    25         }
    26     }
    27     printf("%lld",a[m]);
    28     for(int i=m-1;i>=0;i--){
    29         printf("%08lld",a[i]);
    30     }
    31     printf("
    ");
    32 }
    33 int main()
    34 {
    35     while(~scanf("%lld",&n)){
    36         solve(n);
    37     }
    38     return 0;
    39 }
     1 //N的阶乘
     2 import java.math.BigInteger;
     3 import java.util.Scanner;
     4 public class d {
     5      static BigInteger x=BigInteger.valueOf(1);//要静态变量
     6     public static BigInteger getTac(BigInteger a)
     7     {
     8         if(a.compareTo(x) <= 0)//0!==1!==1
     9             return x;
    10         else
    11             return a.multiply(getTac(a.subtract(x)));
    12     }
    13     public static void main(String[] args) {
    14       
    15         Scanner cin = new Scanner(System.in);
    16         BigInteger m;
    17         while(cin.hasNext())
    18         {
    19             m = cin.nextBigInteger();
    20             m = getTac(m);
    21             System.out.println(m);
    22         }
    23 
    24     }
    25 }        
     1 //2^n大数
     2 //C++
     3 #include<iostream>
     4 #include<cstdio>
     5 #include<cstring>
     6 #define  M 100000000
     7 #define  N  500
     8 using namespace std;
     9 int a[N],t;
    10 int n;
    11 void solve(int n)
    12 {
    13     memset(a,0,sizeof(a));//会对下次的运算造成影响
    14     a[0]=1;
    15     int m=0;
    16     for(int i=1;i<=n;i++)
    17     {
    18         for(int j=0;j<=m;j++)
    19         {
    20             a[j]<<=1;
    21             if(j>=1&&a[j-1]>=M){
    22                 a[j]+=a[j-1]/M;
    23                 a[j-1]%=M;
    24             }
    25             if(a[m]>=M) m++;
    26         }
    27     }
    28     printf("%d",a[m]);
    29     for(int i=m-1;i>=0;i--){
    30         printf("%08d",a[i]);
    31     }
    32     printf("
    ");
    33 }
    34 int main()
    35 {
    36     scanf("%d",&t);
    37     while(t--)
    38     {
    39         scanf("%d",&n);
    40         solve(n);
    41     }
    42     return 0;
    43 }
     1 //2^n
     2 import  java.io.*;
     3 import  java.util.*;
     4 import  java.math.*;
     5 public class Main{
     6     static Scanner cin = new Scanner(System.in);//写在main外面要静态
     7     public static void main(String args[]){
     8         int t;
     9         t=cin.nextInt();
    10         while(t>0){
    11             t=t-1;
    12             int n;
    13             n=cin.nextInt();
    14             BigInteger ans=BigInteger.valueOf(2);
    15             ans=ans.pow(n);
    16             System.out.println(ans);
    17         }
    18     }
    19 }
    //基础的java运算
    import java.util.Scanner;
    import java.math.BigInteger;
      public class Main{
        static Scanner cin=new Scanner(System.in);
        public static void main(String arg[]){
        BigInteger a,b;
        a=cin.nextBigInteger();
        b=cin.nextBigInteger();
        System.out.println("a+b :"+a.add(b));//+
        System.out.println(a.subtract(b)); // -
        System.out.println(a.multiply(b)); //*
        System.out.println(a.divide(b));  // /
        System.out.println(a.remainder(b)); // %
        if(a.equals(b)){
            System.out.println("YES");
        }
        else{
            System.out.println("NO");
        }
        if(a.compareTo(b)==0){
            System.out.println("a==b");
        }
        else if(a.compareTo(b)==-1){
            System.out.println("a<b");
        }
        else  if(a.compareTo(b)==1){
            System.out.println("a>b");
        }
    }
    }
  • 相关阅读:
    [arm]虚拟机,2440开发板,主机三者互通
    Linux下的lds链接脚本简介(四)
    Linux下的lds链接脚本简介(三)
    Linux下的lds链接脚本简介(二)
    Linux下的lds链接脚本简介(一)
    程序员面试资源大收集
    Source Insight 3.50.0065使用详解
    DNW烧写FL2440 NAND Flash分区
    php isset()与empty()的使用
    JSON.parse()和JSON.stringify()的区别
  • 原文地址:https://www.cnblogs.com/tingtin/p/9520969.html
Copyright © 2011-2022 走看看