A Little Pony and Crystal Mine
题意:给一个奇数n,打印菱形图案,整个图形占n*n格。
例如--->输入3,则打印图案如下
*D* DDD *D*
算法:
由中间那行为n个D,以t = n/2为界先打上半边,每一行由D隔开的*的个数为离中间行的距离。
D的个数为n-当前行离中间行的距离*2。
下半边同理。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int h = n/2;
for(int i=1;i<=h;i++)
{
for(int j=0;j<h+1-i;j++)
putchar('*');
for(int k=0;k<n-(h+1-i)*2;k++)
putchar('D');
for(int j=0;j<h+1-i;j++)
putchar('*');
puts("");
}
for(int i=h+1;i<=n;i++)
{
for(int j=0;j< i-h-1;j++)
putchar('*');
for(int k=0;k<n-(i-h-1)*2;k++)
putchar('D');
for(int j=0;j< i-h-1;j++)
putchar('*');
puts("");
}
}
return 0;
}
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#define maxn 100010
using namespace std;
int a[maxn];
int main()
{
int n,flag,t;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
flag = 0,t = -1;
for(int i=0;i<n-1;i++)
{
if(a[i+1]<a[i])
{
t = i;
break;
}
}
if(t==-1)
{
printf("0\n");
continue;
}
for(int i=t+1;i<n-1;i++)
{
if(a[i+1]<a[i])
{
flag = 1;
break;
}
}
if(flag || a[0]<a[n-1])
{
printf("-1\n");
continue;
}
else printf("%d\n",n-t-1);
}
return 0;
}
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#define maxm 100010
using namespace std;
double p[maxm],ans[maxm];
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
double res = 0;
ans[0] = 0;
for(int i=1;i<=m;i++)
{
ans[i] = pow((i*1.0)/m,n);
p[i] = ans[i]-ans[i-1];
}
for(int i=1;i<=m;i++)
res += p[i]*i;
printf("%lf\n",res);
}
return 0;
}
#include<cstdio>
#include<iostream>
#include<cstring>
#define maxn 60
#define INF 0x3f3f3f3f
#include<cmath>
using namespace std;
bool isp[maxn];
int pri[maxn],c,a[110],b[110],val[maxn],dp[110][(1<<18)],ans[110][(1<<18)];
void init()
{
memset(isp,0,sizeof(isp));
c = 0;
for(int i=2;i<maxn;i++)
{
if(!isp[i])
{
pri[c++] = i;
for(int j=i*2;j<maxn;j+=i)
isp[j] = true;
}
}
}
int main()
{
int n;
init();
while(scanf("%d",&n)!=EOF)
{
memset(val,0,sizeof(val));
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<60;i++)
{
for(int j=0;j<c;j++)
{
if(i%pri[j]==0)
val[i] = (val[i]|(1<<j));
}
}
for(int i=0;i<=n;i++)
{
for(int j=0;j<(1<<c);j++)
dp[i][j] = INF;
}
for(int i=0;i<(1<<c);i++)
dp[0][i] = 0;
for(int i=1;i<=n;i++)
{
for(int j=0;j<(1<<c);j++)
{
for(int k=1;k<60;k++)
{
if((j&val[k])==0)
{
int tmp = dp[i-1][j^val[k]]+fabs(a[i]-k);
if(tmp<dp[i][j])
{
dp[i][j] = tmp;
ans[i][j] = k;
}
}
}
}
}
int res = INF,state,x=0;
for(int i=0;i<(1<<c);i++)
{
if(dp[n][i]<res)
{
res = dp[n][i];
state = i;
}
}
for(int i=n;i>=1;i--)
{
b[x++] = ans[i][state];
int t = ans[i][state];
state = state^val[t];
}
for(int i=x-1;i>0;i--)
printf("%d ",b[i]);
printf("%d\n",b[0]);
}
return 0;
}
Codeforces Round #259 (Div. 2) A/B/C/D,布布扣,bubuko.com
Codeforces Round #259 (Div. 2) A/B/C/D
原文地址:http://blog.csdn.net/u012841845/article/details/38661409