题目链接:http://noi.openjudge.cn/ch0201/7621/
题解:简单枚举
注意:排序;
格式化输出 printf("%03d",i);格式化3位,不足补0
#include <stdio.h>
#include <iostream>
#include <string>
#include <cmath>
#include <algorithm>
using namespace std;
int n;
struct point {
int a,b,c;
};
bool compare(point a,point b)
{
if(a.c!=b.c)return a.c<b.c;
if(a.b!=b.b)return a.b<b.b;
return a.a<b.a;
}
int main(){
cin>>n;
point all[10000];
int size=0;
for(int i=0;i<=100;i++){
for(int j=0;j<=100;j++){
if(i+j*2>n)break;
else{
if((n-i-j*2)%5==0){
point tmp;
tmp.a=i;
tmp.b=j;
tmp.c=(n-i-j*2)/5;
all[size++]=tmp;
}
}
}
}
sort(all,all+size,compare);
for(int i=0;i<size;i++){
printf("%03d",i+1);//格式化输出
printf("%12d%12d%12d",all[i].a,all[i].b,all[i].c);
cout<<endl;
}
}