1. 程式人生 > >1016. 部分A+B (15)

1016. 部分A+B (15)

正整數A的“DA(為1位整數)部分”定義為由A中所有DA組成的新整數PA。例如:給定A = 3862767,DA = 6,則A的“6部分”PA是66,因為A中有2個6。

現給定A、DA、B、DB,請編寫程式計算PA + PB

輸入格式:

輸入在一行中依次給出A、DA、B、DB,中間以空格分隔,其中0 < A, B < 1010

輸出格式:

在一行中輸出PA + PB的值。

輸入樣例1:
3862767 6 13530293 3
輸出樣例1:
399
輸入樣例2:
3862767 1 13530293 8
輸出樣例2:

0

使用Java會超時

C++ AC程式碼

#include<iostream>
#include <string>
#include <cstdio>
#include <string.h>
using namespace std;
int main(){
	char A[10000], B[10000];
	int Da, Db, Pa = 0, Pb = 0;
	scanf( "%s", A );
	scanf( "%d", &Da );
	scanf( "%s", B );
	scanf( "%d", &Db );
	for ( int i = 0; i < strlen(A); i++ ){
		if ( A[i] - 48 == Da)
			Pa = Pa * 10 + Da;
	}
	for ( int i = 0; i < strlen(B); i++ ){
		if ( B[i] - 48 == Db)
			Pb = Pb * 10 + Db;
	}
	cout << Pa + Pb;
	return 0;
}

改天看看C語言字串輸入和字串方法。。。

Java程式碼,執行超時,不過測試點資料能在控制檯輸出

import java.util.Scanner;

public class pat_1016 {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String A = in.next(); 
		int Da = in.nextInt();
		String B = in.next();
		int Db = in.nextInt();
		int Pa = 0, Pb = 0;
		for(int i = 0; i < A.length(); i++){
			if(A.charAt(i) - 48 == Da)
				Pa = Pa * 10 + Da;
		}
		for(int i = 0; i < B.length(); i++){
			if(B.charAt(i) - 48 == Db)
				Pb = Pb * 10 + Db;
		}
		System.out.println(Pa + Pb);
	}
}