📄 3962222_tle.cc
字号:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
using namespace std;
char alphaset[] = "1234567890. ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int cnt[64];
int sum;
double getH()
{
int i;
double ret = 0.0;
for (i = 0; i < 64; i++)
{
if (cnt[i] != 0)
{
double p = cnt[i] * 1.0 / sum;
ret += p * log10(p) / log10(2);
}
}
return -ret;
}
void show()
{
int i, j;
for (i = 0; i < 64; i++)
{
for (j = 0; j < cnt[i]; j++)
{
putchar(alphaset[i]);
}
}
puts("");
}
void f()
{
int i, p;
int min = 10000;
for (i = 0; i < 64; i++)
{
if (cnt[i] < min)
{
min = cnt[i];
p = i;
}
}
sum+=3;
cnt[p]+=3;
}
void g()
{
int i, p;
int max = 0;
for (i = 0; i < 64; i++)
{
if (cnt[i] > max)
{
max = cnt[i];
p = i;
}
}
sum+=3;
cnt[p]+=3;
}
int main()
{
int i;
double h, H;
sum = 0;
for (i = 0; i < 64; i++)
{
cnt[i] = rand() % 10;
if (cnt[i] < 0)
{
cnt[i] *= -1;
}
sum += cnt[i];
}
scanf("%lf", &H);
while (true)
{
h = getH();
//printf("%lf\n", h);
if (fabs(h - H) < 0.005)
{
break;
}
if (h > H)
g();
else
f();
}
show();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -