马上天梯了 这几天做一下以前的题目 听学长说一个人低于90分整队没成绩 虽然学长说题目很水但还是有点害怕...
题意:输入一个n和c 表示最多用到n个c字符 输出沙漏的形状和未用完的字符个数
易错点:字符后面没有空格。。。因为在字符后面补了空格一直wa 很水的一个题 本来不想写  就当水一篇博客吧。。毫无营养
思路:第i层需要2*i-1个c字符 
对于上半层来说 每层需要j个空格 和 2*(cnt-i)+1个c字符
对于下半层来说 每层需要cnt-i个空格 和 2*i-1个c字符
#include <set>
#include <map>
#include <stdio.h>
#include <string.h>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <vector>
#define pb push_back
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define fi first
#define se second
 
 
using namespace std;
const int INF = 0x3f3f3f3f;//?????
typedef long long ll;
typedef long double ld;
typedef pair<ll, int>  pll;
typedef pair<int, int> pii; 
const int N = 1000000;
int a[55],b[55],prime[N],st[N];ll sum[N];
int cnt;
ll qpow(ll x,ll y,ll mod)
{
	int ans=1;
	while(y)
	{
		if(y&1) ans=ans*x%mod;
		x=x*x%mod;
		y>>=1;
	}
	return ans%mod;
}
void ola()
{
	for(int i=2;i<=1000000;i++)
	{
		if(st[i]==0)
		{
			prime[cnt++]=i;
		}
		for(int j=0;j<cnt&&i*prime[j]<=1000000;j++)
		{
			st[i*prime[j]]=1;
			if(i%prime[j]==0) break;
		 } 
	}
}
int main()
{
	IOS;
	int n; cin >> n; char c; cin >> c;
	int cnt=1;//层数
	int sum=1;//符号总数
	while(sum<=n)
	{
		cnt++;
		sum+=2*(2*cnt-1);
	 }
	 sum-=2*(2*cnt-1);
	cnt--;
	for(int i=1;i<=cnt;i++)
	{
		for(int j=1;j<i;j++) 
		{
			cout << " ";
		}
		for(int k=1;k<=2*(cnt-i)+1;k++)
		{
			cout << c;
		}
		cout << endl;
	}
	for(int i=2;i<=cnt;i++) 
	{
		for(int j=1;j<=(cnt-i);j++)
		{i
			cout << " ";
		}
		for(int k=1;k<=2*i-1;k++)
		{
			cout << c;
		}
		cout << endl;
	}
	cout << n-sum << endl;
	return 0; 
}