F Takio与Blue的人生赢家之战

Time Limit:1000MS  Memory Limit:65535K

题型: 编程题   语言: 无限制

描述

在那个风起云涌的SCAU ACM里,有两位人生赢家,他们分别是大洲Takio神和Blue神。      (尤其是blue神。)
由于这两位人生赢家代码能力强,才高八斗,学富五车,英俊潇洒,玉树临风,独步江湖,呼风唤雨,妹子纷至沓来。
而小邪由于太渣了,只能默默地帮他们记录下他们换了多少个妹子。
以上背景纯属题目需要,其实两位大神是很专情的。
终于有一天,小邪计算出他们身边妹子的总数n,想要给Takio神和Blue神。
但是Takio神和Blue神的邮箱是使用英文的,而小邪的英语又很渣,于是无法将n翻译成英语发过去。
但是,小邪想到了你——聪明的14级新生,向你寻求答案。

出题人:K·小邪

输入格式

第一行是一个整数t(t <= 100),代表样例个数
对于每个样例有一个整数n(0<=n<=2000000000)

输出格式

对于每个n,输出其英文表现形式,具体格式见样例输出

输入样例

4
5
121
1010
1008611

输出样例

five
one hundred and twenty-one
one thousand and ten
one million, eight thousand, six hundred and eleven

Hint

输出不一定符合英语规范,但是要符合Sample的规范
对于一个n>1000,若n%1000 >= 100(%代表取余操作)且不为0,且在n%1000对应的英文输出前(如果存在)用","相连而不是"and"

需要用到的英文单词为(不包括引号):
"zero","one","two","three","four","five","six","seven","eight","nine"
"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"
"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"
"hundred","thousand","million","billion"
分别代表
0,1,2,3,4,5,6,7,8,9
10,11,12,13,14,15,16,17,18,19
20,30,40,50,60,70,80,90
100,1000,1000000,1000000000

#include<stdio.h>
#include<string.h>
void go(void);
int a[12],k,num;
int leap,leap1,leap2,leap3,leap4,leap5,leap6,leap7,leap8,leap9,leap10;
char str[100][100]=
{
    "zero","one","two","three","four","five","six",
    "seven","eight","nine","ten","eleven","twelve",
    "thirteen","fourteen","fifteen","sixteen",
    "seventeen","eighteen","nineteen","twenty"
};

int main()
{
    int i,k,T;

    strcpy(str[30],"thirty");
    strcpy(str[40],"forty");
    strcpy(str[50],"fifty");
    strcpy(str[60],"sixty");
    strcpy(str[70],"seventy");
    strcpy(str[80],"eighty");
    strcpy(str[90],"ninety");
    scanf("%d",&T);
    while(T--)
    {
        memset(a,0,sizeof(a));
        leap=leap1=leap2=leap3=leap4=leap5=leap6=leap7=leap8=leap9=leap10=0;
        scanf("%d",&num);
        i=1;
        k=num;
        if(num>1000&&num%1000>=100) leap=1;
        while(k!=0)
        {
            a[i++]=k%10;
            k=k/10;
        }
        k=i-1;
        if(k==0||k==1) {printf("%s\n",str[num]);continue;}
        if(k==2) {if(num>0&&num<=20||num%10==0) printf("%s\n",str[num]);
        else printf("%s-%s\n",str[num-num%10],str[num%10]);continue;}
      go();
      printf("\n");

    }
    return 0;
}
void go(void)
{
    int temp1,temp2,temp3;

    if(a[10]) {printf("%s billion",str[a[10]]);leap10=1;}
    if((leap&&k>=9)||(leap10&&a[9]!=0)||(leap10&&a[8]!=0)||(leap10&&a[7]!=0)||(leap10&&a[6]!=0)||(leap10&&a[5]!=0)||(leap10&&a[4]!=0))
    printf(", ");

    if(a[9]) {printf("%s hundred",str[a[9]]);leap9=1;}
    temp1=a[8]*10+a[7];
    if(leap9&&temp1!=0) printf(" and ");
    if(temp1!=0)
    {
        if((temp1>0&&temp1<=20)||temp1%10==0) printf("%s",str[temp1]);
        else printf("%s-%s",str[temp1-temp1%10],str[temp1%10]);
        leap7=1;
    }
    if(leap9||leap7) printf(" million");
    if((leap&&k>=7)||((leap9&&a[6]!=0)||(leap7&&a[6]!=0))||((leap9&&a[5]!=0)||(leap7&&a[5]!=0))||((leap9&&a[4]!=0)||(leap7&&a[4]!=0))) printf(", ");

    if(a[6]) {printf("%s hundred",str[a[6]]);leap6=1;}
    temp2=a[5]*10+a[4];
    if(leap6&&temp2!=0) printf(" and ");
    if(temp2!=0)
    {
        if((temp2>0&&temp2<=20)||temp2%10==0) printf("%s",str[temp2]);
        else printf("%s-%s",str[temp2-temp2%10],str[temp2%10]);
        leap4=1;
    }
    if(leap6||leap4) printf(" thousand");
    if(leap) printf(", ");
    if(a[3]) {printf("%s hundred",str[a[3]]);leap3=1;}
    temp3=a[2]*10+a[1];
    if((leap3&&temp3!=0)||(a[3]==0&&temp3!=0)) printf(" and ");
    if(temp3!=0)
    {
        if((temp3>0&&temp3<=20)||temp3%10==0) printf("%s",str[temp3]);
        else printf("%s-%s",str[temp3-temp3%10],str[temp3%10]);
    }
}

时间: 2024-10-10 02:50:21

F Takio与Blue的人生赢家之战的相关文章

十三、java_GUI

目录: 一.AWT 二.组件和容器 三.布局管理器 四.事件处理 五.java图形 六.window事件 一.AWT AWT(Abstract Window Toolkit)包括了很多类和接口,用于Java Application的GUI(Graphics User Interface 提醒用户界面)编程 GUI的各种元素(如:窗口,按钮,文本框等)由java类来实现 使用AWT锁涉及的类一般在java.awt包及子包中 Container和Component是AWT中的两个核心类 二.组件和容

iOS --- 通过CPU实现的简单滤镜效果

iOS中使用CPU实现滤镜效果的原理很简单, 即将图片转换成像素数据, 然后对每一个像素进行相应的滤镜效果计算, 然后重新得到过滤后的图片. CPU滤镜效果代码如下: 头文件 // CPUImageFilterUtil.h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #import <OpenGLES/ES1/gl.h> #import <OpenGLES/ES1/glext.h> //

Java之GUI编程(二)——布局管理器

在上篇博客Java之GUI编程(一)中我已经对GUI编程的组件和事件做了简单介绍了,现在来看看另外一部分关于组件在各个平台是如何做到仍能保持自己合理的位置大小以及外观的. 已经说了Java是跨平台运行的,但是不同的平台对于点及坐标的定义不完全相同.而且屏幕的解析度分辨率不同也会造成位置的变化,为了确保每个组件的相对位置和大小以及外观,java就设计了布局管理器. 布局管理器是对容器中的元素进行管理,按照一定的规则排放容器里面的元素.它控制了组件的摆放. 布局管理器分类: FlowLayout:浮

GUI初步和frame&panel

java的话这个GUI其实不是什么重点,但我们也要学习,重点是学习这种图形编程的思路. java里面对于图形的一些类都封装在了AWT和它的一些子包里.AWT(抽象窗口开发包)            当然AWT是比较旧的开发包,新的叫swing, 所有可以显示出来的元素都叫component,然后下面那些什么Button,lable都是它的子类.,这里有个比较特殊的子类,container,在图形里面,container是用来容纳其他component的元素.然后这个container又分两种,一

《JavaScript高级程序设计》心得笔记-----第二篇章

第五章 9.Function函数 1)         函数内部有两个特殊的对象: (1)       arguments(主要用于保存函数参数,有一个属性callee,这是一个指针,指向拥有arguments对象的函数),但是在函数严格模式下,arguments.callee会出错,这时候可以使用函数表达式来完成 eg:var fac = (function  f(num){ return num*f(num-1); }); (2)       this 2)         属性:lengt

J2SE之GUI编程

AWT Componet & Container Frame /* 范例名称:Frame 应用举例 * 源文件名称:TestFrame.java * 要 点:Frame组件的创建及显示设置 */ import java.awt.*; public class TestFrame { public static void main( String args[]) { Frame f = new Frame("My First Test"); f.setLocation(300,

GUI常用方法和示例

Frame : Frame : 创建一个框       1 Frame f = new Frame("这是框的标题");//创建一个框 标题是这是框的标题       //默认调用paint(Graphics g)方法  需要覆写 2 或者写个类 继承这个Frame类 也行 如 ;             public class GUI extends Frame{                public static void main(String[] args){     

javascript Array学习与使用

一.Javascript数组是无类型的:数组元素可以任意类型,并且同一个数组中的不同元素也可能有不同的类型,javascript数组是动态的,会根据需要增长或者缩减,每一个数组都有一个length属性.它不是只读的,可以通过设置这个属性值,从数组的末尾移除项,或者添加新项 二.创建数组 (1)数组字面量表示方法: Var colors=[true,1,"green"]; //创建包含3个字符串的数组. Var arr=[];//创建一个空数组 Var b=[1,{x:1,y:2},[2

javascript Array数组常用方法学习与总结

<script> var a=[1,2,3,4]; document.body.innerHTML='<b>'+a.join()+'</b>'+'</br>'; document.write('<b>'+typeof(a.join(' '))+'</b>'+'</br>'); document.write('<b>'+a.join(' ')+'</b>'+'</br>'); docume