__所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号.__
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
19 *
*****
***
*
***
*****
2
#include<stdio.h>
int main()
{
int N,k=0;
char c;
if(scanf("%d ",&N))
{};
c=getchar();
if(N!=0)
{
int i,m=0,n = 0;
i=3;
while(n<=(N-1)/2)
{
n=n+i;
m++;
i=i+2;
}
k=m-1;
n=n-i+2;
int l=N-n*2-1;
int w=k;
for(i=0;i<=k;i++)
{
int o=i;
for(o=o-1;o>=0;o--)
{
printf(" ");
}
int h=2*w+1;
while(h>0)
{
printf("%c",c);
h--;
}
printf("\n");
w--;
}
for(i=1;i<=m-1;i++)
{
for(int q=(2*(m-1)+1-(2*i+1))/2;q>0;q--)
{
printf(" ");
}
int h=2*i+1;
while(h>0)
{
printf("%c",c);
h--;
}
printf("\n");
}
printf("%d\n",l);
}
else
printf("0");
return 0;
}
每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。
对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。
100311
0:2
1:3
3:1
A = int(input())
s = []
p = 0
m = set()
for t in range(0,1000):
n = A % 10**(t+1)
h = 10
n = int(n / (h**p))
m.add(n)
s.append(n)
p = p + 1
q = int(A / 10**(t+1))
if q == 0:
break
from collections import Counter
c = Counter(s)
keys =list(c.keys())
values = list(c.values())
keys.sort()
i = 0
for keys[i] in keys:
print(‘{0:1}{1:1}{2:1}‘.format(keys[i],‘:‘,c[keys[i]]))
i = i+1
原文:https://www.cnblogs.com/my-boke/p/14530195.html