隨筆 - 11  文章 - 2  trackbacks - 0
          <2008年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          新聞分類

          link

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜


          public class bigadd {

              /**
               * @param args
               */
              //***********************兩個相等數(shù)相加**********************************88
              public static String add(String s){
                  char c[]=s.toCharArray();
                  for(int i=0;i<c.length/2;i++){
                      char t=c[i];
                      c[i]=c[c.length-1-i];
                      c[c.length-1-i]=t;
                  }
                  int r[]=new int[c.length+1];
                  int carry=0;
                  for(int i=0;i<c.length;i++){
                      int t=Integer.parseInt(c[i]+"")+Integer.parseInt(c[i]+"")+carry;
                      carry=t/10;
                      r[i]=t%10;
                  }
                  r[c.length]=carry;
                  String sr;
                  if(r[c.length]==0)
                      sr="";
                  else
                      sr="1";
                  for(int j=r.length-2;j>=0;j--){
                      sr+=r[j];
                  }
                  return sr;
              }
              //*******************************兩個不同數(shù)相加*****************************************
              public static String adddif(String s1,String s2){
                  char c1[] ;
                  char c2[] ;
                  if (s1.length() >= s2.length()) {
                      c1 = s1.toCharArray();
                      c2 = s2.toCharArray();
                  }
                  else{
                      c2 = s1.toCharArray();
                      c1 = s2.toCharArray();
                  }
                  for(int i=0;i<c1.length/2;i++){
                      char t=c1[i];
                      c1[i]=c1[c1.length-1-i];
                      c1[c1.length-1-i]=t;
                  }
                  for(int i=0;i<c2.length/2;i++){
                      char t=c2[i];
                      c2[i]=c2[c2.length-1-i];
                      c2[c2.length-1-i]=t;
                  }
                 
                  int r[]=new int[c1.length+1];
                  int carry=0;
                  for(int i=0;i<c2.length;i++){
                      int t=Integer.parseInt(c1[i]+"")+Integer.parseInt(c2[i]+"")+carry;
                      carry=t/10;
                      r[i]=t%10;
                  }
                  for(int i=c2.length;i<c1.length;i++){
                      int t=Integer.parseInt(c1[i]+"")+carry;
                      carry=t/10;
                      r[i]=t%10;
                  }
                  r[c1.length]=carry;
                  String sr;
                  if(r[c1.length]==0)
                      sr="";
                  else
                      sr="1";
                  for(int j=r.length-2;j>=0;j--){
                      sr+=r[j];
                  }
                  return sr;
              }
              //*************************求2的N次冪*********************************8
              public static String pow(int n){
                  if(n==0)
                      return "1";
                  else if(n==1)
                      return "2";
                  else
                      return add(pow(n-1));       
              }
             
              public static String sumpow(int p1,int n,int q){
                  String sum="";
                  String pre=pow(p1);
                  for(int i=p1;i<=n;i=i+q){
                      sum=adddif(sum,pre);
                      for(int j=1;j<=2;j++)               
                          pre=add(pre);
                  }
                  return sum;
              }
              //************************************相減***********************************
              public static String minus(String s1,String s2){
                  char c1[] ;
                  char c2[] ;
                  if (s1.length() >= s2.length()) {
                      c1 = s1.toCharArray();
                      c2 = s2.toCharArray();
                  }
                  else{
                      c2 = s1.toCharArray();
                      c1 = s2.toCharArray();
                  }
                  for(int i=0;i<c1.length/2;i++){
                      char t=c1[i];
                      c1[i]=c1[c1.length-1-i];
                      c1[c1.length-1-i]=t;
                  }
                  for(int i=0;i<c2.length/2;i++){
                      char t=c2[i];
                      c2[i]=c2[c2.length-1-i];
                      c2[c2.length-1-i]=t;
                  }
                 
                  int r[]=new int[c1.length];
                  int carry=0;
                  for(int i=0;i<c2.length;i++){
                      int t=Integer.parseInt(c1[i]+"")-Integer.parseInt(c2[i]+"")-carry;
                      if(t<0){
                          r[i]=Integer.parseInt(c1[i]+"")-Integer.parseInt(c2[i]+"")+10-carry;
                          carry=1;
                      }
                      else{
                          r[i]=t;
                          carry=0;
                      }
                  }
                  for(int i=c2.length;i<c1.length;i++){
                      int t=Integer.parseInt(c1[i]+"")-carry;
                      if(t<0){
                          carry=1;
                          r[i]=9;
                      }
                      else{
                          r[i]=t;
                          carry=0;
                      }
                  }
                  String str;
                  if(r[c1.length-1]==0){
                      str="";
                  }
                  else{
                      str=""+r[c1.length-1];
                  }
                  for(int j=r.length-2;j>=0;j--){
                      str+=r[j];
                  }
                  return str;
                 
              }
              //**********************************減1****************************************
              public static String minus1(String s){
                  char c[]=s.toCharArray();
                  int i;
                  for(i=0;i<c.length/2;i++){
                      char t=c[i];
                      c[i]=c[c.length-1-i];
                      c[c.length-1-i]=t;
                  }
                  int t=0;
                  for(i=0;i<c.length;i++){
                      t=Integer.parseInt(c[i]+"");
                      if(t>0){
                          t=t-1;
                          break;
                      }           
                  }
                  c[i]=(t+"").charAt(0);
                  System.out.println(t+" "+i);
                  String str;
                  if(c[c.length-1]=='0')
                      str="";
                  else
                      str=c[c.length-1]+"";
                 
                  for(int j=c.length-2;j>=i;j--)
                      str=str+c[j];
                  for(int j=i-1;j>=0;j--)
                      str+=9;
                  return str;
              }
              //*************************************加1************************************
              public static String add1(String s){
                  char c[]=s.toCharArray();
                  int i;
                  for(i=0;i<c.length/2;i++){
                      char t=c[i];
                      c[i]=c[c.length-1-i];
                      c[c.length-1-i]=t;
                  }
                  int t=0;
                  for(i=0;i<c.length;i++){
                      t=Integer.parseInt(c[i]+"");
                      if(t<9){
                          t=t+1;
                          break;
                      }   
                  }
                  String str;
                  if(i==c.length)
                      str="1";
                  else{
                      c[i]=(t+"").charAt(0);
                      str="";
                  }
                  for(int j=c.length-1;j>=i;j--)
                      str=str+c[j];
                  for(int j=i-1;j>=0;j--)
                      str+=0;
                  return str;
              }
             
              public static void main(String[] args) {
                  // TODO 自動生成方法存根
                  //System.out.println(pow(1000));
                  //System.out.println(pow(999));
                  //System.out.println(adddif(pow(999),pow(999)));
                  //System.out.println(adddif("19","999"));
                  System.out.println(sumpow((4-3),(1000-3),2));
                  //System.out.println(minus(pow(1000),pow(999)));
                  //System.out.println(add1(pow(1000)));
              }

          }


          posted on 2008-06-13 13:36 poower 閱讀(441) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 民和| 公安县| 宁乡县| 阜康市| 察雅县| 大石桥市| 灵寿县| 普洱| 常德市| 望奎县| 沂源县| 大邑县| 湟中县| 额敏县| 淳化县| 纳雍县| 雷波县| 古交市| 呼和浩特市| 周宁县| 白山市| 武强县| 墨玉县| 汨罗市| 沧州市| 银川市| 江口县| 都江堰市| 九寨沟县| 闸北区| 开江县| 泌阳县| 六枝特区| 长治县| 宁夏| 扶沟县| 云林县| 乌拉特后旗| 开平市| 武鸣县| 安多县|