紫书 习题3-3 数数字

#include <stdio.h>
#include <string.h>

int main(void)
{

	int n ;

	//freopen("input.txt" , "r" , stdin);
	//freopen("output.txt" , "w" , stdout);

	scanf("%d" , &n);

	while(n--)
	{
		int N ;
		int i ;
		int count[10];

		memset(count , 0 , sizeof(count));
		scanf("%d" , &N);

		for( i = 1; i <= N ; i++)
		{
			int num = i ;

			while(num)
			{
				int a = num%10;
				num /=10;
				count[a]++; //类似桶排序
			}
		}

		for( i =0 ; i< 9 ; i++)
		{
			printf("%d " , count[i]);
		}
			printf("%d\n" , count[i]);//注意输出格式
	}

	return 0 ;
}

  

#include <iostream>   //二维数组打表
#include <cstring>
#include <cstdio>
using namespace std;
int f[10000][10];  

int main()
{
    memset(f, 0, sizeof(f));
    for (int i = 1 ; i < 10000 ; ++ i) {
        for (int j = 0 ; j < 10 ; ++ j)
            f[i][j] = f[i-1][j];
        int left = i;
        while (left) {
            f[i][left%10] ++;
            left /= 10;
        }
    }  

    int t,n;
    while (~scanf("%d",&t))
    while (t --) {
        scanf("%d",&n);
        for (int i = 0 ; i < 9 ; ++ i)
            printf("%d ",f[n][i]);
        printf("%d\n",f[n][9]);
    }
    return 0;
}

  

#include<cstdio>  //打表2
int c[10000][10];  

int main()
{
    int i, k, t, n;
    for (i = 1; i < 10000; ++i)
    {
        for (k = i; k; k /= 10) ++c[i][k % 10];
        for (; k < 10; ++k) c[i][k] += c[i - 1][k];
    }
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d", &n);
        for (i = 0; i < 9; ++i)
            printf("%d ", c[n][i]);
        printf("%d\n", c[n][9]);
    }
    return 0;
}

  

时间: 2024-10-14 21:09:20

紫书 习题3-3 数数字的相关文章

紫书 习题3-2 分子量(字符串,常量数组)

#include<stdio.h> #include<string.h> int main() { int t,i,num; char a[]={'C','H','O','N'}; double n[]={12.01,1.008,16.00,14.01};//此所谓之常量数组的妙用 char s[105]; double sum; scanf("%d",&t); while(t--) { sum=0;//每次多组数据输入时sum复位 scanf(&quo

紫书 习题3-5

#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const char inst[] = "ABLR"; const int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; int main(void) { int t = 0; char s[5][6]; char c; while ((s[0

紫书 习题2-5 分数化小数

1 #include<stdio.h> //基础版 2 #define MAX 110 3 4 int main(void) 5 { 6 int a, b, c; 7 scanf("%d %d %d",&a,&b,&c); 8 9 int integer = a/b; 10 int remainderTemp=a%b; 11 int arr[MAX]; 12 13 for(int i = 0; i< c; i++){ 14 int result

紫书 习题3-1 得分(字符串)

1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 char s[100]; 6 scanf("%s",s); 7 int sum=0; 8 int cnt=0; 9 for(int i=0;i<strlen(s);i++) 10 { 11 if(s[i]=='O') 12 { 13 cnt++; 14 sum+=cnt; 15 } 16 else 17 { 18 cnt=0; 19 }

紫书 习题3-4 周期串

#include<stdio.h> #include<string.h> int main(void) { int n,stlen,i,j; char carr[1000]; while(scanf("%d",&n)!=EOF) { while(n--) { scanf("%s",carr); stlen=strlen(carr); for(i=1; i<=stlen; i++) { if(stlen%i==0) { for(j

紫书 习题2-3 倒三角形

#include<iostream> #include<cstdio> #include<cstring> using namespace std; main() { int n,i,j; scanf("%d",&n); for(i=n-1;i>=0;i--){ for(j=0;j<n-i-1;j++){ printf(" ");//先把二维全置为空格 } for(j=0;j<2*i+1;j++){//把

紫书第4章 函数和递归

1  序 系统的整理下第四章的学习笔记.同上次一样,尽量在不依赖书本的情况下自己先把例题做出来.这次有许多道题代码量都比较大,在例题中我都用纯C语言编写,但由于习题的挑战性和复杂度,我最终还是决定在第五章开始前,就用C++来完成习题.不过所有的代码都是能在C++提交下AC的. 在习题中,我都习惯性的构造一个类来求解问题,从我个人角度讲,这会让我的思路清晰不少,希望自己的一些代码风格不会影响读者对解题思路的理解. 其实在第四章前,我就顾虑着是不是真的打算把题目全做了,这些题目代码量这么大,要耗费很

紫书第三章 数组和字符串

1  序 系统的整理下第三章的学习笔记.例题代码是在未看书本方法前自己尝试并AC的代码,不一定比书上的标程好:习题除了3-8百度了求解方法,其它均独立完成后,会适当查阅网上资料进行整理总结.希望本博文方便自己日后复习的同时,也能给他人带来点有益的帮助(建议配合紫书--<算法竞赛入门经典(第2版)>阅读本博客).有不足或错误之处,欢迎读者指出. 2  例题 2.1  UVa272--Tex Quotes #include <stdio.h> int main() { bool log

第10章例题(紫书)

21/21 题目都很基础,有很多题书上讲得比较详细,然后隔得时间有点久,所以具体什么trick都忘了,思路也懒得去回忆,所以将就着放上来了.... 例题10–1 Uva 11582 题意:输入a, b, n让你计算F[a^b]%n;其中这个F[i]是斐波那契数: 题解: 这题是快速幂+找循环节,用什么方法找循环节呢?因为第一个数是0和1,然后当再出现0和1的时候就是出现循环节的时候,然后假如找到了循环节T,然后就有F[n] = F[n % T],预处理找循环节,O(一百万左右),快速幂logn