1047 编程团体赛 (20分)
vector在初始化大小的时候使用(),不是[].
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
int sum = 0;
cin >> sum;
vector<int> v1, v3(10000);
for (int i = 0; i < sum; i++)
{
int temp = 0,t1=0,t2=0;
scanf_s("%d-%d %d", &t1, &t2, &temp);//输入
v1.push_back(t1);
for (int i1 = 0; i1 <= v1.size(); i1++)
{
if (t1 == v1[i1])//每个队伍的和都存到第一次出现的地方。
{
v3[i1] += temp; break;
}
}
}
int max = 0;
int maxfen = 0;
for (int i = 0; i < v1.size(); i++)
{
if (maxfen < v3[i])
{
maxfen = v3[i];
max = v1[i];
}
}
cout << max<<" " << maxfen;
return 0;
}
1048 数字加密 (20分)
测试点2,5没有过,而且代码重复性太高了。没有用补齐的操作,但是错误的地方还没有找到。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
int temp = 0,flag=1,cha=a.size()-b.size();//flag表示奇偶数的标记
if (a.size() <= b.size())//b长
{
cha = -cha;
for (int i = b.size() - 1; i >= cha; i--)//从末尾开始操作。
{
if (flag % 2 == 1)//奇数位
{
int s = ((b[i]-'0') + (a[i - cha]-'0')) % 13;
if (s == 10)b[i] = 'J';
else if (s == 11)b[i] = 'Q';
else if (s == 12)b[i] = 'K';
else b[i] = (char)(s+'0');
}
else//偶数位
{
int s = b[i] - a[i - cha];
if (s < 0)
s += 10;
b[i] = (char)(s + '0');
}
flag++;
}
}
if(a.size() > b.size())//a长
{
for (int i = b.size() - 1; i >= 0; i--)//从末尾开始操作。
{
if (flag % 2 == 1)//奇数位
{
int s = ((b[i] - '0') + (a[i + cha] - '0')) % 13;
if (s == 10)b[i] = 'J';
else if (s == 11)b[i] = 'Q';
else if (s == 12)b[i] = 'K';
else b[i] = (char)(s + '0');
}
else//偶数位
{
int s = b[i] - a[i + cha];
if (s < 0)
s += 10;
b[i] = (char)(s + '0');
}
flag++;
}
}
int flag1 = 0;
for (int i = 0; i < b.size(); i++)
{
if (b[i]-'0' == 0 && flag1 == 0)
continue;
else
{
flag1 = 1;
cout << b[i];
}
}
return 0;
}