HDU 1256 画8

画8

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 2   Accepted Submission(s) : 2

Problem Description

谁画8画的好,画的快,今后就发的快,学业发达,事业发达,祝大家发,发,发.

 

Input

输入的第一行为一个整数N,表示后面有N组数据. 每组数据中有一个字符和一个整数,字符表示画笔,整数(>=5)表示高度.

 

Output

画横线总是一个字符粗,竖线随着总高度每增长6而增加1个字符宽.当总高度从5增加到6时,其竖线宽度从1增长到2.下圈高度不小于上圈高度,但应尽量接近上圈高度,且下圈的内径呈正方形. 每画一个"8"应空一行,但最前和最后都无空行.

 

Sample Input


2
A 7
B 8

 

Sample Output


AA
AA AA
AA AA
AA
AA AA
AA AA
AA

BBB
BB BB
BB BB
BBB
BB BB
BB BB
BB BB
BBB

 

Source

浙江工业大学第四届大学生程序设计竞赛

#include<stdio.h>
int F(int n)
{
    if(n==7)
        return 5;
    else
        return 5+(n-7)/2;

}
int main()
{
    int i,j,n,num,k,x1,x2,l,q=5,p,u1,u2;
    char str;
    scanf("%d",&n);
    while(n--)
    {
        p=2;
        scanf("\n%c %d",&str,&num);
        p=p+(num-6)/6;
        q=F(num);
        j=num-q;
        k=(num-3)/2;
        if((num-3)%2==0)
        {
            x1=k;x2=k;
        }
        else
        if((num-3)%2!=0)
        {
            x1=k;x2=k+1;
        }
        if(num!=6&&num!=5)
        {
            for(u1=0;u1<p;u1++)
            printf(" ");
            for(i=0;i<j;i++)
                printf("%c",str);
            puts("");
            for(i=0;i<x1;i++)
            {
                for(u1=0;u1<p;u1++)
                printf("%c",str,str);
                for(l=0;l<j;l++)
                printf(" ");
                for(u2=0;u2<p;u2++)
                printf("%c",str,str);
                puts("");
            }
            for(u1=0;u1<p;u1++)
            printf(" ");
            for(i=0;i<j;i++)
                printf("%c",str);
            puts("");;
            for(i=0;i<x2;i++)
            {
                for(u1=0;u1<p;u1++)
                printf("%c",str,str);
                for(l=0;l<j;l++)
                printf(" ");
                for(u2=0;u2<p;u2++)
                printf("%c",str,str);
                puts("");
            }
            for(u1=0;u1<p;u1++)
            printf(" ");
            for(i=0;i<j;i++)
                printf("%c",str);
            puts("");
        }
        else
        if(num==6)
        {
           printf("  ");
            for(i=0;i<2;i++)
                printf("%c",str);
            puts("");
            for(i=0;i<1;i++)
            {
                printf("%c%c",str,str);
                for(l=0;l<2;l++)
                printf(" ");
                printf("%c%c",str,str);
                puts("");
            }
            printf("  ");
            for(i=0;i<2;i++)
                printf("%c",str);
            puts("");;
            for(i=0;i<2;i++)
            {
                printf("%c%c",str,str);
                for(l=0;l<2;l++)
                printf(" ");
                printf("%c%c",str,str);
                puts("");
            }
            printf("  ");
            for(i=0;i<2;i++)
                printf("%c",str);
            puts("");
        }
        else
        if(num==5)
        {
           printf(" ");
            for(i=0;i<1;i++)
                printf("%c",str);
            puts("");
            for(i=0;i<1;i++)
            {
                printf("%c",str,str);
                for(l=0;l<1;l++)
                printf(" ");
                printf("%c",str,str);
                puts("");
            }
            printf(" ");
            for(i=0;i<1;i++)
                printf("%c",str);
            puts("");;
            for(i=0;i<1;i++)
            {
                printf("%c",str,str);
                for(l=0;l<1;l++)
                printf(" ");
                printf("%c",str,str);
                puts("");
            }
            printf(" ");
            for(i=0;i<1;i++)
                printf("%c",str);
            puts("");
        }
        if(n)
        puts("");
    }
    return 0;
}
时间: 2024-09-23 06:02:17

HDU 1256 画8的相关文章

HDOJ/HDU 1256 画8(绞下思维~水题)

Problem Description 谁画8画的好,画的快,今后就发的快,学业发达,事业发达,祝大家发,发,发. Input 输入的第一行为一个整数N,表示后面有N组数据. 每组数据中有一个字符和一个整数,字符表示画笔,整数(>=5)表示高度. Output 画横线总是一个字符粗,竖线随着总高度每增长6而增加1个字符宽.当总高度从5增加到6时,其竖线宽度从1增长到2.下圈高度不小于上圈高度,但应尽量接近上圈高度,且下圈的内径呈正方形. 每画一个"8"应空一行,但最前和最后都无空

PhotoShop把美女照片转成清爽的水彩素描画效果教程

画此画需要数位板,ps,sai.我喜欢用sai软件画线条.ps上色. 原照片 画好后 首先第一步: 在sai里面画线条以及素描关系. 在线稿的时候就要注意人物的明暗虚实. 第二步: 开始上色,先上脸部的色彩 分类: PS入门教程

hdu 1527

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 hint:威佐夫博弈 基本类似于模板 #include <iostream> #include <cmath> #include <cstdio> using namespace std; const double q = (1 + sqrt(5.0)) / 2.0; // 黄金分割数 int Wythoff(int a, int b) { if (a > b)

hdu 2551 竹青遍野

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2551 hint:就是读懂题就行了 #include <iostream> #include <cstdio> using namespace std; typedef long long LL; LL data[1005]; int main() { data[0]=0; for(int i=1; i<1005; i++) data[i]+=data[i-1]+i*i*i; LL

hdu 2054 A == B?

http://acm.hdu.edu.cn/showproblem.php?pid=2054 此题巨坑,刚开始我以为是简单的水题,就用strcmp过, but错了,后来经过我苦思冥想,结果还有几组数据 0.0 和 0,1.000和1.0 , 但是我不太确定前面的0是不是有作用我还是写了,但是有人过的时候,前面的0没考虑比如: 002和2可能是相等的,也可能是不想等的所以不用判断,只能说明hdu数据不是很强啊,嘿嘿 代码如下: #include <iostream> #include <c

hdu 4430 Yukari&#039;s Birthday

点击打开链接hdu 4430 思路:枚举r+二分k 分析: 1 题目要求的是找到一组最小的r*k,如果r*k相同那么就找r最小的. 2 很明显k>=2,根据n <= 10^12,那么可以知道r的最大值r<50,所以只要枚举枚举r的值,然后二分k的大小找到所有的解,存入一个结构体里面,然后在对结构体排序,那么这样就可以得到最后的ans 3 注意题目说了中心点最多一个蜡烛,所以写二分的时候应该注意判断的条件: 4 还有可能计算得到结果超了long long直接变成负数所以应该对或则个进行判断

hdu 1238 Substrings

点击打开链接hdu 1238 思路:kmp+暴力枚举子串 分析: 1 题目要求找到一个子串x,满足x或x的逆串是输入的n个字符串的子串,求最大的x,输出x的长度 2 题目的n最大100,每一个字符串的最大长度为100,那么暴力枚举子串就是o(n^2)才10000肯定是不会超时的,但是由于这里涉及到了逆串的问题,所以我们应该还要求出n个子串的逆串,然后在求最大的x. 代码: #include<iostream> #include<algorithm> #include<cstd

hdu 1857 Word Puzzle

点击打开链接hdu 1857 思路:字典树 分析: 1 题目要求的是给定的单词第一个字母在这个矩形里面的最小的坐标 2 矩形的最大500*500,单词的来源有三个方向,并且单词的起点和终点在矩形之内都是可能的.所以的如果利用枚举矩形之内的单词,那么肯定是超内存的 3 所以我们必须考虑另一种的方法就是对单词进行建字典树,那么我们只要去枚举单词的可能的起点,然后进行查找相应的单词是不是在树上,如果是的话就标记一下当前的坐标. 4 注意由于单词的来源有三个方向,但是因为要求的如果下相同的情况下要求坐标

hdu 1595 find the longest of the shortest

点击打开链接hdu 1595 思路:最短路+优先队列+Dijstra+枚举边 分析: 1 题目要求的是删掉一条边之和求出的最短路中的最大值. 2 很明显,肯定是要先求出原图的最短路并且记录父亲节点.现在我们可以想,如果要枚举所有的边,显然这个是不可能的实现的.所以我们仔细分析可以知道其实能够对最短路产生影响的就是原图最短路上的边,所以我们只需要去枚举删除最短路径上面边然后求最短路即可,最后得到ans 3 这一题的n <= 1000 , m<=n*(n-1)/2 , 刚开始我用的SPFA,然后就