码迷,mamicode.com
首页 > 其他好文 > 详细

luogu梦中的统计

时间:2018-06-22 10:58:10      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:数据类型   str   处理   html   return   ref   size   1.5   main   

https://www.luogu.org/problemnew/show/P1554

我一上来果断骗分,因为一开始没想到怎么处理取下三位及以上数的每一位,然后我就看了题解。O(∩_∩)O~

题解的思路是用循环处理,每次取最后一位,然后将整个数减少一位。当数不能再减少时,跳出循环。^_^

看代码咯

#include<iostream>
#include<cstdio>

using namespace std;

int a[11];

int m,n,k;
int main()
{
    scanf("%d%d",&m,&n);
    for(int i=m;i<=n;i++)
    {
        k=i;
        do
        {
            a[k%10]++;
            k=k/10;
        }while(k);
    }
    for(int j=0;j<=9;j++)
    printf("%d ",a[j]);
    return 0;
}

~\(≧▽≦)/~啦啦啦做完了

开心O(∩_∩)O~~


 

(⊙o⊙)哦!对了,再写一个题解上的字符串做法。字符串啊啊啊O(≧口≦)O!

 题解的做法中用到了sprintf这个函数,先讲一下sprintf函数的用法吧(⊙v⊙)

这当然不是原创https://zhidao.baidu.com/question/757355598366787604.html

1.sprintf函数的头文件是#include<cstdio>

2.sprintf与printf函数的区别:二者功能相似,但是sprintf函数打印到字符串中,而printf函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。

3.可以动态指定,需要截取的字符数

char s1={‘A‘,‘B‘,‘C‘};

char s2={‘T‘,‘Y‘,‘x‘};

sprintf(str,"%.*s%.*s",2,s1,3,s2);

sprintf(s, "%*.*f", 10, 2, 3.1415926); 

4.可以打印出i的地址:sprintf(s, "%p", &i);

相当于sprintf(s, "%0*x", 2 * sizeof(void *), &i);

5.sprintf的返回值是字符数组中字符的个数,即字符串的长度,不用再调用strlen(s)求字符串的长度。

6.比如:sprintf(buffer, "%d", 123456);执行后buffer即指向字符串“123456”

#include<iostream>
#include<cstdio>

#include<cstring>
using namespace std;

char s[1001];
int m,n,a[11];
int main()
{
    scanf("%d%d",&m,&n);
    for(int i=m;i<=n;i++)
    {
        sprintf(s,"%d",i);
        for(int k=0;k<strlen(s);k++)
        {
             a[(s[k]-0)]++;
        }
    }
    for(int j=0;j<=9;j++)
    printf("%d ",a[j]);
    return 0;
}

?(^?^*)啦啦啦~\(≧▽≦)/~啦啦啦

luogu梦中的统计

标签:数据类型   str   处理   html   return   ref   size   1.5   main   

原文地址:https://www.cnblogs.com/xrj1229/p/9211795.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!