九度1045(排序)

来源:互联网 发布:淘宝网网店装修教程 编辑:程序博客网 时间:2024/05/24 06:31

题目链接:http://ac.jobdu.com/problem.php?pid=1045


解题思路:


完整代码:

#include <functional>#include <algorithm>#include <iostream>#include <fstream>#include <sstream>#include <iomanip>#include <numeric>#include <cstring>#include <climits>#include <cassert>#include <complex>#include <cstdio>#include <string>#include <vector>#include <bitset>#include <queue>#include <stack>#include <cmath>#include <ctime>#include <list>#include <set>#include <map>using namespace std;#pragma comment(linker, "/STACK:102400000,102400000")typedef long long LL;typedef double DB;typedef unsigned uint;typedef unsigned long long uLL;/** Constant List .. **/const int MOD = int(1e9)+7;const int INF = 0x3f3f3f3f;const LL INFF = 0x3f3f3f3f3f3f3f3fLL;const DB EPS = 1e-9;const DB OO = 1e20;const DB PI = acos(-1.0); //M_PI;/**BigNumber..**/const int ten[4] = {1 , 10 , 100 , 1000};const int maxl = 1000;struct BigNumber{    int d[maxl];    BigNumber(string s){        int len = s.size();        d[0] = (len - 1) / 4 + 1;        int i , j , k;        for(i = 1 ; i < maxl ; i ++)    d[i] = 0;        for(i = len - 1 ; i >= 0 ; i --){            j = (len - i - 1) / 4 + 1;            k = (len - i - 1) % 4;            d[j] += ten[k] * (s[i] - '0');        }        while(d[0] > 1 && d[d[0]] == 0)    --d[0];    }    BigNumber(){        *this = BigNumber(string("0"));    }    string toString(){        string s("");        int i , j , temp;        for(i = 3 ; i >= 1 ; i --){            if(d[d[0]] >= ten[i])                break;        }        temp = d[d[0]];        for(j = i ; j >= 0 ; j --){            s = s + (char)(temp / ten[j] + '0');            temp %= ten[j];        }        for(i = d[0] - 1 ; i > 0 ; i --){            temp = d[i];            for(j = 3 ; j >= 0 ; j --){                s = s + (char)(temp / ten[j] + '0');                temp %= ten[j];            }        }        return s;    }}zero("0") , d , temp , midl[15];BigNumber operator + (const BigNumber &a , const BigNumber &b){    BigNumber c;    c.d[0] = max(a.d[0] , b.d[0]);    int i , x = 0;    for(i = 1 ; i <= c.d[0] ; i ++){        x = a.d[i] + b.d[i] + x;        c.d[i] = x % 10000;        x /= 10000;    }    while(x != 0){        c.d[++c.d[0]] = x % 10000;        x /= 10000;    }    return c;}BigNumber operator - (const BigNumber &a , const BigNumber &b){    BigNumber c;    c.d[0] = a.d[0];    int i , x = 0;    for(i = 1 ; i <= c.d[0] ; i ++){        x = 10000 + a.d[i] - b.d[i] + x;        c.d[i] = x % 10000;        x = x / 10000 - 1;    }    while((c.d[0] > 1) && (c.d[c.d[0]] == 0))   -- c.d[0];    return c;}const int maxn = 1010;struct node{    int a, b , c;}k[maxn];bool cmp(node x , node y){    if(x.a == y.a)    {        if(x.b == y.b)            return x.c < y.c;        return x.b < y.b;    }    return x.a < y.a;}int main(){    #ifdef DoubleQ    freopen("in.txt","r",stdin);    #endif    std::ios::sync_with_stdio(false);    std::cin.tie(0);    int n;    while(cin >> n)    {        int cnt = 0;        for(int x = 0 ; x < 100 ; x ++)        {            for(int y = 0 ; y < 100 - x - 1 ; y ++)            {                if(14 * x + 8 * y + 100 <= n * 3)                {                    k[cnt].a = x;                    k[cnt].b = y;                    k[cnt++].c = 100 - x - y;                }            }        }        sort(k , k + cnt , cmp);        for(int i = 0 ; i < cnt ; i ++)        {            cout << "x=" << k[i].a << ",y=" << k[i].b << ",z=" << k[i].c << endl;        }    }}


0 0
原创粉丝点击