7-39月饼
输入样例:
3 20
18 15 10
75 72 45
输出样例:
94.50
用C++中sort从大到小排序将会非常简单
#include <iostream>
#include <algorithm>
using namespace std;
struct moon{
double num;//总量
double sum;//总价
double pri;//单价
}a[1223];
bool cmp(moon x, moon y)
{
return x.pri > y.pri;
}
int main()
{
int N, D, i,j=0;
double Sum2 = 0,Sum = 0;
cin >> N >> D;
for (i = 0; i < N; i++)
cin >> a[i].num;
for (i = 0; i < N; i++)
cin >> a[i].sum;
for (i = 0; i < N; i++)
a[i].pri = a[i].sum / (a[i].num*1.0);
sort(a, a + N, cmp);
for(j=0;j<N;j++)
{
Sum += a[j].num;
if (Sum >=D)
{
Sum2 +=( D - (Sum - a[j].num))*a[j].pri;
break;
}
else
Sum2 += a[j].sum;
}
printf("%.2f\n",Sum2);
return 0;
}
7-6 数列求和-加强版
输入样例:
1 3
输出样例:
123
long long int 是完全不够用的
#include <stdio.h>
int main()
{
int A,N;
scanf("%d%d",&A,&N);
int i,r=0;
int c[100001];
if(N==0) printf("0");
for(i=0;i<N;i++)
{
c[i]=(A*(N-i)+r)%10;
r=(A*(N-i)+r)/10;
}
if(r) printf("%d",r);
for(i=N-1;i>=0;i--)
printf("%d",c[i]);
}