⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 统计数字1.txt

📁 重新定义权为:剖分弦的长度和加上多边形的周长(显然等价),重新求解 本函数还适用于任何定义在剖分后的三角形上的权的情况(修改一下) 例如权为三角形的面积的面积平方和
💻 TXT
字号:
#include<stdio.h>

int Num[10] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};//Num[i]表示i位数的个数,例如:Num[2],表示00-99的总个数

int count[10];

int main()
{
int i, j, k;
int page, len, temp;
while(scanf("%d", &page)+1)
{
   printf("本书共有%d页。\n", page);
   for(i=0; i<10; ++i)count[i] = 0;
   temp = page, len = 0;
   while(temp)
   {
    ++len;
    temp /= 10;
   }
   while(len)
   {
    temp = page / Num[len-1];//例如数字xxIxx,则数码I出现的次数可以记为(xx+1)*Num[2]
    k = temp % 10;
    count[k] += (page + 1 - temp*Num[len-1]);//例如221,最高位的2出现的次数是221+1-200,即2-00到2-21共22个
    j = temp / 10;//例如数字xxIxx,temp=xxI, j在计算0到(I-1)的数码出现次数时用的到:(j+1)*Num[2]
    for(i=0; i<k; ++i)//计算0到(I-1)的数码出现次数
    {
     count[i] += (j + 1)*Num[len-1];
    }
    while(i<10)//I到9的各个数码出现次数,例如221里面,十位可以出现2,3,……9,但是要求百位只能是0,1,而不能是2,所以这里是j*Num[len-1],而不是(j+1)*Num[len-1]
    {
     count[i] += j*Num[len-1];
     ++i;
    }
    count[0] -= Num[len-1];
    --len;
   }
   for(i=0; i<10; ++i)
    printf("数码%d出现的次数:%d\n", i, count[i]);
}
return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -