栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1469 Pairs of Integers

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1469 Pairs of Integers

#include<iostream>#include<map>#include<string>#include<stdio.h> using namespace std;enum {    SIZ = 20,};int sum;char dat[SIZ];map<int, int> tab;void insert(int a, int b){    tab.insert(make_pair(a,b));}void removeLast(){    int i, s;    for (i=0; i<10; ++i){        s = sum - i;        if (s%11 == 0){ s /= 11; if (s <=0) continue; insert(s*10+i, s);        }    }}void removeFirst(){    int i, u=10, s=sum, v;    s /= 10;    while(s>=10){        u *= 10;        s /= 10;    }    for(i=1; i<=s; ++i){        v = (sum - i * u)/2;        if (v >= u) continue;        insert(i*u+v, v);    }}void removePos(int unit){    int s = sum / unit;    int a = s % 11;    int x = s / 11;    int v = (sum % unit)/2;    if (a < 10)        insert(x*10*unit+a*unit+v, x*unit+v);    if (a <= 0) return;    --a;    v = (sum%unit + unit)/2;    if (v < unit){        insert(x*10*unit+a*unit+v, x*unit+v);    }}void fun(){    tab.clear();    if (sum % 2 == 0){        removeFirst();        for (int u=10; sum/u>=10; u*=10){ removePos(u);        }    }    removeLast();}void output(){    printf("%dn", tab.size());    sprintf(dat, "%d", sum);    for(map<int,int>::iterator it=tab.begin(); it!=tab.end(); ++it){        sprintf(dat, "%d", it->first);        string a(dat);        sprintf(dat, "%d", it->second);        string b(dat);        while(b.length()+1<a.length()) b = "0" + b;        printf("%s + %s = %dn", a.c_str(),     b.c_str(), sum);    }}int main(){    int tst;    scanf("%d", &tst);    while(tst--){        scanf("%d", ∑);        fun();        output();        if (tst) printf("n");    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377718.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号