#低级进阶#无聊小题集 1

#低级进阶#无聊小题集 1

记一下因学校布置而做的小题吧。这学期做的题实在太少了,希望接下来多刷点吧。

求 A/B 高精度值(ab)

【问题描述】
计算 A/B 的精确值,设 A,B 是以一般整数输入,计算结果精确到小数后 20 位(若不足 20 位,末尾不
用补 0)。
【输入样例 1】
4 3
【输出样例 1】
4/3=1.33333333333333333333
【输入样例 2】
6 5
【输出样例 2】
6/5=1.2

def main():
    a, b = map(int, input().strip().split())
    ya=a
    c=a//b
    d=[]
    a=(a%b)*10
    for i in range(1,21):
        d.append(a//b)
        a=(a%b)*10
    for i in range(len(d)-1,0,-1):
        if(d[i]==0):
            d.pop(i)
        else:
            break
    print(ya,end='')
    print('/',end='')
    print(b,end='')
    print('=',end='')
    print(c,end='')
    print('.',end='')
    for i in d:
        print(i,end='')
        
main()

<-有没有更简单的方法?python格式输出好烦哦。一开始做这题的时候import了decimal,结果发现没法实现(可能因为我菜和懒+想当然吧)->


双色汉诺塔

题目描述

    设A、B、C是3 个塔座。开始时,在塔座A 上有一叠共n 个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2,……,n,奇数号圆盘着蓝色,偶数号圆盘着红色,如图所示。现要求将塔座A 上的这一叠圆盘移到塔座B 上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则: 

      规则(1):每次只能移动1 个圆盘; 

      规则(2):任何时刻都不允许将较大的圆盘压在较小的圆盘之上; 

      规则(3):任何时刻都不允许将同色圆盘叠在一起; 

      规则(4):在满足移动规则(1)-(3)的前提下,可将圆盘移至A,B,C 中任一塔座上。 



    试设计一个算法,用最少的移动次数将塔座A 上的n个圆盘移到塔座B 上,并仍按同样顺序叠置。 

输入

只一行是给定的正整数n。                  

输出

将计算出的最优移动方案输出。文件的每一行由一个正整数k和2个字符c1和c2组成,表示将第k个圆盘从塔座c1移到塔座c2上。 

样例输入

3

样例输出

1 A B
2 A C
1 B C
3 A B
1 C A
2 C B
1 A B
def haha(n,a,b,c,j):
    if(n==1):
        print(j,a,b)
    else:
        j=n-1
        haha(n-1,a,c,b,j)
        j=n
        haha(1,a,b,c,j)
        j=n-1
        haha(n-1,c,b,a,j)
       
def main():
    n=int(input())
    j=1
    haha(n,'A','B','C',j)

main()
    

<--我不太明白为什么要是双色,一开始被唬住了…并且由于本题,本菜鸟知道了递归深度这玩意儿……-->


放大

Problem Description

Taotao is glad to see that lots of students have registered for today's algorithm competition. Thus he wants to pull a banner on the wall. But Taotao is so stupid that he doesn't even know how to enlarge words to fit the size of banner. So Taotao gives you a slogan template and asked you to enlarge them in k times.

Input

There are multiple test cases.
For each test case, first line contains three numbers n, m, k (1<=n, m<=100,1<=k<=10).
The next n lines each contain m visible characters.

Output

For each test case, you should output kn lines each contain km visible characters to represent the expanded slogan.

Sample Input

3 3 2
.*.
.*.
.*.

Sample Output

..**..
..**..
..**..
..**..
..**..
..**..
#include<stdio.h>
main(){
    int n,m,k,i,j,ha=0,ha2;
    char a[1000][100],b[1000][1000],de;
    while(scanf("%d%d%d",&n,&m,&k)!=EOF) {
        for(i=0;i<n;i++)
            for(j=0;j<m;j++){
                scanf("%c",&de);
                if(de=='\n') 
                    j--;        
                else
                    a[i][j]=de;
            }   
        for(j=0;j<n;j++)
            for(ha2=0;ha2<k;ha2++)
                for(ha=0;ha<m;ha++)
                    for(i=0;i<k;i++)    b[j*k+ha2][i+ha*k]=a[j][ha];
                
        for(i=0;i<k*n;i++){
            for(j=0;j<k*m;j++)  printf("%c",b[i][j]);
            printf("\n");
        }
    }
} 

<-没啥好说的,最容易看懂的题目……-->

猜你喜欢

转载自www.cnblogs.com/leefree/p/10803887.html