zoukankan      html  css  js  c++  java
  • 【大数处理、正则表达式】NYOJ-513

    【正则】

      正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。

      模式描述在搜索文本时要匹配的一个或多个字符串。

      常用字符:

    1 //正则表达式
    2 //$ 匹配输入字符串结尾的位置
    3 //* 零次或多次匹配前面的字符或子表达式。例如,zo* 匹配“z”和“zoo”。* 等效于 {0,}
    4 //+ 一次或多次匹配前面的字符或子表达式。例如,“zo+”与“zo”和“zoo”匹配,但与“z”不匹配。+ 等效于 {1,}。
    5 //? 零次或一次匹配前面的字符或子表达式。例如,“do(es)?”匹配“do”或“does”中的“do”。? 等效于 {0,1}。           
    6 //[xyz]  字符集。匹配包含的任一字符。例如,“[abc]”匹配“plain”中的“a”。
      正则表达式语法 链接:https://msdn.microsoft.com/zh-cn/library/ae5bf541(v=vs.80).aspx

    【例题】

    A+B Problem IV

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
     
    描述
    acmj最近发现在使用计算器计算高精度的大数加法时很不方便,于是他想着能不能写个程序把这个问题给解决了。
     
    输入
    包含多组测试数据
    每组数据包含两个正数A,B(可能为小数且位数不大于400)
    输出
    每组输出数据占一行,输出A+B的结果,结果需要是最简的形式。
    样例输入
    1.9 0.1
    0.1 0.9
    1.23 2.1
    3 4.0
    样例输出
    2
    1
    3.33
    7
    【代码】
      Java:
     1 import java.math.BigDecimal;
     2 import java.util.Scanner;
     3 
     4 public class Bignumber {
     5     public static void main(String[] args) {
     6         Scanner cin = new Scanner(System.in);
     7         while (cin.hasNext()) {
     8             BigDecimal a = cin.nextBigDecimal();//移除组分隔符
     9             BigDecimal b = cin.nextBigDecimal();
    10             BigDecimal c = a.add(b);
    11             System.out.println(sw(c.toString()));
    12         }
    13     }
    14     static String sw(String s) {
    15         if (s.indexOf(".") > 0) {
    16             System.out.println("*-*-");
    17             s = s.replaceAll("0+?$", "");
    18             s = s.replaceAll("[.]$", "");
    19         }
    20         return s;
    21     }
    22 }

      C++:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #define MAX 1000
     4 char a[MAX],b[MAX],c[MAX];
     5 int main()
     6 {
     7     int i,j,k,l,m,n,la,lb,mx;
     8     char ch;
     9     memset(a,'0',sizeof(a));
    10     memset(b,'0',sizeof(b));
    11     while(~scanf("%s%s",a,b))
    12     {
    13         la=strlen(a);
    14         lb=strlen(b);
    15         a[la]='0';
    16         b[lb]='0';
    17         i=0;
    18         while((a[i]-'.')&&i<la)
    19         {
    20             i++;
    21         }
    22         if(i==la)
    23             a[la]='.';
    24         j=0;
    25         while((b[j]-'.')&&j<lb)
    26         {
    27             j++;
    28         }
    29         if(j==lb)
    30             b[lb]='.';
    31         m=(la-i)>(lb-j)?(la-i):(lb-j);
    32         if(i>=j)
    33         {
    34             for(l=mx=i+m,k=0,j=i-j;l>=0;l--)
    35             {
    36                 if(a[l]=='.')
    37                 {
    38                     c[l]='.';
    39                     continue;
    40                 }
    41                 ch=(l-j)<0?'0':b[l-j];
    42                 c[l]=(a[l]-'0'+ch-'0'+k)%10+'0';
    43                 k=(a[l]-'0'+ch-'0'+k)/10;
    44             }
    45         }
    46         else
    47         {
    48             for(l=mx=j+m,k=0,j=j-i;l>=0;l--)
    49             {
    50                 if(b[l]=='.')
    51                 {
    52                     c[l]='.';
    53                     continue;
    54                 }
    55                 ch=(l-j)<0?'0':a[l-j];
    56                 c[l]=(ch-'0'+b[l]-'0'+k)%10+'0';
    57                 k=(ch-'0'+b[l]-'0'+k)/10;
    58             }
    59         }
    60         if(k>0)
    61             printf("%d",k);
    62         while(c[mx]=='0')
    63             mx--;
    64         if(c[mx]=='.')
    65             mx--;
    66         for(i=0;i<=mx;i++)
    67             printf("%c",c[i]);
    68         printf("
    ");
    69         memset(a,'0',sizeof(a));
    70         memset(b,'0',sizeof(b));
    71     }
    72 } 
    73 //待研究、待看懂
  • 相关阅读:
    crash收集上报方案
    keychain的使用
    自定义Xcode文件模板
    iOS实现一个简单的扫码功能
    tableView渲染延迟
    iOS app icons
    fastlane自动打包
    iOS pod封装和升级
    手写代码 -- 数组扁平化
    手写代码 -- Promise
  • 原文地址:https://www.cnblogs.com/zhengbin/p/4371040.html
Copyright © 2011-2022 走看看