B1023 自己做的
#include<iostream>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
int t;
for(int i=1;i<10;i++)
{
if(a[i]!=0)
{
t=i;
break;
}
}
printf("%d",t);
for(int j=a[0];j>0;j--)
{
printf("0");
}
for(int j=a[t]-1;j>0;j--)
{
printf("%d",t);
}
for(int i=t+1;i<10;i++)
{
for(int j=a[i];j>0;j--)
{
printf("%d",i);
}
}
return 0;
}
A1070
//A1070
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct node{
float mount,price;
float unit;//数量,总价,单价
};
bool cmp(node a,node b)
{
return a.unit>b.unit;//这里居然出错了,原因是cmp函数应该在node后面
}
int main()
{
int n,d;
scanf("%d %d",&n,&d);//种类,需求数量
vector<node> a(n);
for(int i=0;i<n;i++)
{
scanf("%f",&a[i].mount);//存储数量
}
for(int i=0;i<n;i++)
{
scanf("%f",&a[i].price);//存储总价
}
for(int i=0;i<n;i++)
{
a[i].unit=a[i].price/a[i].mount;//算出单价
}
sort(a.begin(),a.end(),cmp);//按照单价大小排序,单价大的排在前面
float result=0.0;
for(int i=0;i<n;i++)
{
if(a[i].mount<=d){
result+=a[i].price;
}
else{
result+=a[i].unit*d;//一种就可
break;
}
d=d-a[i].mount;
}
printf("%.2f",result);
return 0;
}
A1033很烦,没做出来