[대수 처리, 정규 표현 식] NYOJ - 513
17218 단어 정규 표현 식
정규 표현 식 은 일반 문자 (예 를 들 어 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 를 포함한다.
출력
각 그룹의 출력 데 이 터 는 한 줄 을 차지 하고 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 // 、
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
awk 상용 명령awk 는 모든 입력 줄 을 하나의 기록 으로 인식 하고 그 줄 의 모든 단어 도 메 인 을 하나의 필드 로 인식 합 니 다. ARGC 명령 줄 에 awk 스 크 립 트 가 들 어 오 는 매개...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.