2018년 8월 29일 화웨이 소프트웨어 필기시험 문제

3624 단어 필기시험
1. 문자열의 숫자와
  :
AB3ASD56n89-9

  
166

문제풀이 사고방식;문자열을 두루 훑어보고 먼저while 통계'-'의 개수를while 통계 숫자에서 얻은 숫자를 얻는다
코드:
#include
#include
#include
#include
#include
using namespace std;

int main()
{
	string str;
	cin >> str;
	string num;
	int sum = 0;
	int fuhao = 0;
	for (int i = 0; i < str.size(); i++){
		while (str[i] == '-'){
			fuhao++;
			i++;
		}
		while (str[i] >= '0' && str[i] <= '9'){
			num += str[i];
			i++;
		}
		if (num != ""){
			sum += pow(-1, fuhao)*stoi(num);
		}
		num = "";
		fuhao = 0;
	}
	cout << sum << endl;
    return 0;
}

2. 권적 공식 구해
입력 설명: 최고 단계는 x^4로 높은 단계부터 낮은 단계까지 상응하는 계수를 순서대로 입력하고 계수는 복수 형식으로 정수, 음수를 포함한다.
상기 규칙에 따라 두 식을 입력하다
출력 설명: 높은 단계에서 낮은 계수로 출력
입력:

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1


출력:

0
2
0
4
0
6
0
8
0
10
0
8
0
6
0
4
0
2

입력 출력 설명: a=(i+i)+(1+i)x+(1+i)x^2+(1+i)x^3+(1+i)x^4
                         b=(i+i)+(1+i)x+(1+i)x^2+(1+i)x^3+(1+i)x^4
출력: c=2i+4i+8i+10i+8i+6i+4i+2i
c(0)=a(0)*b(0);
c(1)=a(1)*b(0)+a(0)*b(1)
c2=a0*b2+a1*b1+a2*b0;
.........
cn=a0*b(n)+a(1)*b(n-1)+a(2)*b(n-2)...........a(n)*b(0);
코드:
#include
#include
#include
#include
using namespace std;
vector solution(vectornum1, vectornum2)//          
{
	int a = num1[0] * num2[0] - num1[1] * num2[1];
	int b = num1[0] * num2[1] + num1[1] * num2[0];
	vectorres = { a, b };
	return res;
}
vector add(vectornum1, vectornum2)//          
{
	int a = num1[0] +num2[0];
	int b = num1[1] +num2[1];
	vectorres = { a, b };
	return res;
}
int main()
{
	vector>a;
	vector>b;
	int num1, num2;
	for (int i = 0; i<5; i++){
		cin >> num1 >> num2;
		a.push_back({ num1, num2 });
	}
	for (int i = 0; i<5; i++){
		cin >> num1 >> num2;
		b.push_back({ num1, num2 });
	}
	reverse(a.begin(), a.end());//              
	reverse(b.begin(), b.end());
	vector>c;
	for (int i = 0; i <9 ; i++){
		vector res = {0,0};
		for (int index1 = 0; index1 <= i; index1++){
			if ((i - index1 >= 0) &&( i - index1 <= 4)&&index1>=0 &&index1<=4){
				vectortem = solution(a[index1], b[i - index1]);
				res = add(res, tem);
			}
		}
		c.push_back(res);
	}
	//int i = c.size();
	for (auto i : c){
		for (auto ii : i){
			cout << ii << endl;
		}
	}
	//system("pause");
	return 0;
}

3. 소 번식
한 쌍의 소는 한 시간에 한 쌍의 소를 번식시키고, 새로 태어난 소는 3h가 지난 후에야 번식할 수 있다
eg: 처음에 소 한 마리가 있었는데 6h에 몇 마리가 번식했는지
 
1h
2h
3h
4h
5h
6h
 
A
B
C
D
E
F
 
 
 
 
 
A1
A2
 
 
 
 
 
 
B1
1
2
3
4
5
7
10
법칙:num(i)=num(i-1)+num(i-4)//num(i)제i시간에 소 몇 마리가 있느냐\
 
#include
using namespace std;
int main()
{
	int N,M,k;
	long long num[50];
	cin>>N;
	int i;
	while(N--)
	{
		i=0;
		cin>>M>>k;
		num[0]=2;
		for(i=1;i=4)
				num[i]=num[i-1]+num[i-4];
			else 
				num[i]=num[i-1]+1;
		}
		cout<

좋은 웹페이지 즐겨찾기