A题:
注意id号和sum和都要排序。sum相同时,对id排序 代码如下:
#include<bits/stdc++.h>
using namespace std;
const double pi=acos(-1);
struct stu {
int sum;
int id;
}s[1005];
int cmp(stu a, stu b) {
if (a.sum == b.sum) {
return a.id < b.id;
}
return a.sum > b.sum;
}
int main()
{
int n;cin>>n;int ans;
for(int i=0;i<n;i++)
{
int a,b,c,d;cin>>a>>b>>c>>d;
s[i].sum=a+b+c+d;
if(i==0) ans=s[0].sum;
}
sort(s,s+n,cmp);int x;
for(int i=n-1;i>=0;i--)
{
if(s[i].sum==ans) x=i;
}
cout<<x+1;
return 0;
}
B题:
找规律....
#include<iostream>
using namespace std;
int main(){
int n,c=0,d=0;long long ans=0;
string a,b;cin>>n>>a>>b;
for(int i=0;i<n;i++)
if(a[i]=='1'&&b[i]=='0')c++,d++;
else if(a[i]=='1'&&b[i]=='1')d++;
for(int i=0;i<n;i++)
if(a[i]=='0'){
if(b[i]=='1')ans+=c;
else ans+=d;
}
cout<<ans<<endl;
}
C题:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
scanf("%d", &n);
int l = 1, sz = sqrt(n);
int r = sz;
while (1) {
for (int i = r; i >= l; i--) printf("%d ", i);
if (r == n) break;
l = r + 1, r = min(n, l - 1 + sz);
}
}