HDOJ 2099

Problem Description
一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?

Input
输入数据有若干组,每组数据包含二个整数a,b(0<a<10000, 10<b<100),若遇到0 0则处理结束。

Output
对应每组数据,将满足条件的所有尾数在一行内输出,格式见样本输出。同组数据的输出,其每个尾数之间空一格,行末没有空格。

Sample Input
200 40
1992 95
0 0

Sample Output
00 40 80
15

题目似乎很简单,但并没有想象的那么容易,主要麻烦在输出格式上。
菜鸡的我居然折腾了一个多小时才成功AC,除了下面的方法,也可以把每个符合条件的数依次转换成字符串保存在字符数组中并打印,但这样似乎有些麻烦。


要保证的输出格式:

  1. 打印的最后一个数后面不能有空格
  2. 十以内的数字,不能只打印一个数,需要打印两位,把前面的0也加上

AC代码 + 注释 附上

#include <stdio.h>

int main(void)
{
    int a, b, i, ax, s, count;
    // 用count来记录是打印的第几个数, 第一个数前面没有空格,如果不是第一个数,打印的时候前面都要跟上一个空格。
    while (scanf("%d %d", &a, &b) && (a || b))
    {
        count = 0;
        ax = a * 100;
        for(i = ax; i < ax + 100; i++)
        {
            if(i % b == 0)
            {
                count++;
                s = i % 100;
                // 要打印的数是个位数,在此条件下成立的数,前面都要多打印一个0
                if(s < 10)
                {
                //是打印的第一个数,前面不用加空格,是个位数,前面需要多打印一个0
                    if(count == 1) 
     
                        printf("0%d", s);
                    else 
            	// 不是打印的第一个数,前面需要加空格,是个位数,前面需要多打印一个0
                        printf(" 0%d", s);
                }
                // 要打印的数不是个位数
                else
                {
                //是打印的第一个数,前面不用加空格,不是个位数,前面不需要多打印一个0
                    if(count == 1)
                        printf("%d", s);
                //不是打印的第一个数,前面需要加空格,不是个位数,前面不用多打印一个0
                    else
                        printf(" %d", s);
                }
            }
        }
        printf("\n");
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值