POJ2602-Superlong sums
33920 단어 super
아주 징 그 러 운 대수 더하기 =
일단 입력 하면 징 그 러 워...한 명 씩 두 개의 숫자 를 끊 고 입력 하 는 사람 이 어디 있어...
주의:
char [] 로 더하기 와 피 가 수 를 저장 하려 면 getchar () 로 입력 해 야 합 니 다.
int [] 로 더하기 와 피 가 수 를 저장 하려 면 scanf) 로 입력 해 야 합 니 다.
cin 을 사용 하면 시간 이 초 과 됩 니 다. cin 은 다시 불 러 오 는 함수 입 니 다. 지정 한 형식 이 없 기 때문에 입력 할 때 시간 을 낭비 합 니 다.
100 W 의 공간 은 국부 정적 으로 신청 할 수 없고 전체 정적 으로 신청 할 수 있 으 며 국부 동적 으로 신청 할 수 있 습 니 다 (new 로)
가장 징 그 러 운 것 은 내 가 결과 로 시작 한 0 (있 으 면) 을 지 웠 는데 WA 라 니, 이런 덧셈 을 본 적 이 없다 는 것 이다!
Output file should contain exactly N digits in a single line representing the sum of these two integers.
이것 은 출력 이 요구 하 는 형식 인 데, 뜻밖에도 피 가산, 가산, 합 을 요구 하 다 니. 의 자릿수 일치!!
이렇게 이해 하면 이 문 제 는 가장 높 은 자리 에 진입 하 는 것 을 허락 하지 않 는 다!!
이상 한 것 은 본 적 이 있 지만, 이런 이상 한 요 구 는 본 적 이 없다.
1 /*char[] */
2
3 //Memory Time
4 //11972K 1594MS
5
6 #include<iostream>
7 #include<string>
8 using namespace std;
9
10 const int size=1000000; //
11 int n; //
12
13 int a[size+1];
14 int b[size+1];
15
16 void add(char* A,char* B,char* ans)
17 {
18 memset(a,0,sizeof(a));
19 memset(b,0,sizeof(b));
20 int pa=0,pb=0;
21
22 int lena=strlen(A);
23 int lenb=strlen(B);
24
25 /* */
26
27 for(int i=lena-1;i>=0;i--)
28 a[pa++]=A[i]-'0';
29 for(int j=lenb-1;j>=0;j--)
30 b[pb++]=B[j]-'0';
31
32 int len=lena>lenb?lena:lenb;
33 char* c=new char[len+1]; // ans
34
35 int w=0; //
36 for(int k=0;k<len;k++)
37 {
38 int temp=a[k]+b[k]+w;
39 c[k]=temp%10+'0';
40 w=temp/10;
41 }
42 len--;
43
44 for(w=0;len>=0;len--) //w len ,
45 ans[w++]=c[len];
46 ans[w]='\0';
47
48 delete c;
49 return;
50 }
51
52 char A[size+1];
53 char B[size+1];
54 char ans[size+1];
55
56 int main(int i)
57 {
58 while(cin>>n)
59 {
60 getchar();
61 for(i=0;i<n;i++)
62 {
63 A[i]=getchar();
64 getchar(); //
65 B[i]=getchar();
66 getchar(); //
67 }
68 A[i]=B[i]='\0';
69
70 add(A,B,ans);
71 cout<<ans<<endl;
72 }
73 return 0;
74 } = = = = = = = = = = = = = = = 화려 한 분할 선 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
1 /*Int[] */
2
3 //Memory Time
4 //17868K 1625MS
5
6 #include<iostream>
7 using namespace std;
8
9 int n; //
10
11 void add(int* a,int* b,char* ans)
12 {
13 char* c=new char[n+1]; // ans
14
15 int w=0; //
16 for(int k=0;k<n;k++)
17 {
18 int temp=a[k]+b[k]+w;
19 c[k]=temp%10+'0';
20 w=temp/10;
21 }
22
23 n--;
24 for(w=0;n>=0;n--) //w n ,
25 ans[w++]=c[n];
26 ans[w]='\0';
27
28 delete c;
29 return;
30 }
31
32 int main(int i)
33 {
34 while(cin>>n)
35 {
36 int* a=new int[n+1];
37 int* b=new int[n+1];
38 int* ta=new int[n+1];
39 int* tb=new int[n+1];
40 char* ans=new char[n+1];
41
42 for(i=0;i<n;i++)
43 scanf("%d %d",&ta[i],&tb[i]);
44
45 /* */
46
47 int pa=0,pb=0;
48 for(i=n-1;i>=0;i--)
49 {
50 a[pa++]=ta[i];
51 b[pb++]=tb[i];
52 }
53
54 add(a,b,ans);
55 cout<<ans<<endl;
56
57 delete a;
58 delete b;
59 delete ta;
60 delete tb;
61 delete ans;
62 }
63 return 0;
64 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 프로그래밍 : 객체지향 (3)상속 (extends) 상속을 사용하면 코드 중복을 제거하고, 기존 클래스를 확장하기 쉬워 프로그램 확장성을 증가시킬 수 있다. class A extends B {} 와 같은 형식으로 사용한다. B 클래스를 A가 상...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.