关闭

NOIP一道水题

标签:
137人阅读 评论(0) 收藏 举报
分类:
 NOIP1996 普及组
【问题描述】
编制一个乘法运算的程序。
从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出。
【输入】
输入只有一行,是两个用空格隔开的数字,均在1~99之间(含1和99)。
【输出】
输出4行或7行,符合乘法的竖式运算格式。
【输入样例1】
89 13
【输出样例1】
  89
* 13
----
 267
 89 
----
1157
 
【输入输出样例1解释】
3×89=267,则第四行267右侧对准个位输出。1×89=89,则第五行89右侧对准十位输出。267+890=1157,则1157右侧对准个位输出。
【输入样例2】
16 8
【输出样例2】
  16
*  8
----
 128
【输入输出样例2解释】
8×16=128,则第四行128右侧对准个位输出。计算完成,不再输出。

 solution:
水题一道,按照乘数的位数进行分类,乘数有一位直接输出结果,如果有两位的话分别算出个位数的乘积和十位数的乘积,然后计算出第一行应该有的空格数,然后再输出结果。
/*************************************************************************
    > File Name: test1.cpp
    > Author: kanberra
    > Mail: kanberra354562007@gmail.com 
    > Created Time: 一 11/16 12:32:55 2015
 ************************************************************************/
#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    while (cin>>n>>m){
        printf("%d\n",n);
        printf("* %d\n",m);
        printf("----\n");
        if (m/10==0){
            cout<<n*m<<endl;
        }else{
            int tp1,tp2,ans,cnt1,cnt2;
            tp1=n*(m%10);
            tp2=n*(m/10);
            ans=n*m;
            if (tp1/100!=0) cnt1=3;
            else cnt1=2;
            if (tp2/100!=0) cnt2=3;
            else cnt2=2;
            int cntspace=cnt2-cnt1+1;
            for (int i=0;i<cntspace;i++)
                printf(" ");
            printf("%d\n",tp1);
            printf("%d\n",tp2);
            printf("----\n");
            printf("%d\n",ans);
        }
    }
    return 0;
}

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5378次
    • 积分:257
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条