题解

210 条题解

  • 0
    @ 2016-10-08 20:06:26

    #include <iostream>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <cstdlib>
    using namespace std;

    int d[10000005];

    int main() {
    int n, x, ans=0;
    cin >> n >> x;

    d[x]=1;
    for (int i=1;i <= n;i++) {
    d[i]=d[i%10];
    if (i/10) d[i]+=d[i/10];
    ans+=d[i];
    }

    cout << ans;

    return 0;
    }

    dp大法,d[i]=d[个位]+d[各位前面的数];

  • 0
    @ 2016-09-10 13:52:20
    #include<iostream>
    using namespace std;
    int main(){
        long long ans=0,x,n,i,temp;
        cin>>n>>x;
        for(i=1;i<=n;++i){
            temp=i;
            do{
                if(temp%10==x) ++ans;
                temp/=10;
            }while(temp);
        }
        cout<<ans;
        return 0;
    }
    
  • 0
    @ 2016-08-30 13:25:05

    ###__DP大法__
    ```c++
    评测结果
    编译成功

    测试数据 #0: Accepted, time = 0 ms, mem = 39652 KiB, score = 10
    测试数据 #1: Accepted, time = 0 ms, mem = 39648 KiB, score = 10
    测试数据 #2: Accepted, time = 0 ms, mem = 39648 KiB, score = 10
    测试数据 #3: Accepted, time = 0 ms, mem = 39648 KiB, score = 10
    测试数据 #4: Accepted, time = 0 ms, mem = 39648 KiB, score = 10
    测试数据 #5: Accepted, time = 0 ms, mem = 39648 KiB, score = 10
    测试数据 #6: Accepted, time = 0 ms, mem = 39648 KiB, score = 10
    测试数据 #7: Accepted, time = 0 ms, mem = 39648 KiB, score = 10
    测试数据 #8: Accepted, time = 0 ms, mem = 39648 KiB, score = 10
    测试数据 #9: Accepted, time = 0 ms, mem = 39648 KiB, score = 10
    Accepted, time = 0 ms, mem = 39652 KiB, score = 100
    代码
    #include <cstdio>
    int dp[10000001],n,x,sum = 0;
    int main() {
    scanf("%d%d",&n,&x);
    dp[x] = 1;
    for (int i = 1;i <= n;i++) {
    dp[i] = dp[i%10];
    if (i/10) dp[i] += dp[i/10];
    sum += dp[i];
    }
    printf("%d",sum);
    return 0;
    }
    ```

  • 0
    @ 2016-08-27 18:35:58

    我的pascal代码如下:

    var n,i,t:longint;
    j,x:integer;
    ch:char;
    s:string;
    begin
    t:=0;
    read(n,x);
    ch:=chr(x+ord('0'));
    for i:=1 to n do
    begin
    str(i,s);
    for j:=1 to length(s) do
    if ch=s[j] then inc(t);
    end;
    writeln(t);
    end.

  • 0
    @ 2016-08-25 22:23:06

    #include<iostream>
    using namespace std;
    int main()
    {
    int x,s,k,i,t;
    cin>>k>>x;
    s=0;
    for(i=1;i<=k;i++)
    {
    t=i;
    do{
    if(t%10==x)
    s++;
    t=t/10;
    }while(t!=0);
    }
    cout<<s;
    return 0;
    }

  • 0
    @ 2016-08-24 17:13:39
    #include <cstdio>
    using namespace std;
    void count_num(int a,int x)
    {
        int count[10] = {0};
        int n = 1;
        int zero = 0;
        int weishu = 0;
        while(a/n)
        {
            weishu++;
            int lowp = a - (a/n)*n;
            int curr = (a/(n))%10;
            int highp = a/(n*10);
            for (int i = 0;i<10;i++)
            {
                if (i<curr)
                {
                    count[i] += (highp+1)*n;
                }
                else if (i == curr)
                {
                    count[i] += (highp)*n;
                    count[i] += (lowp+1);
    
                }
                else
                {
                    count[i] += (highp)*n;
                }
            }
            n *=10;
        }
        int t = 1;
        while(t<=weishu)
        {
            n /=10;
            zero += t*(n-1 -n/10 +1);
            t++;
        }
        count[0] -=zero;
        printf("%d",count[x]);
    }
    int main(){
        int n,x;
        scanf("%d%d",&n,&x);
        count_num(n,x);
    }
    

    感觉像吃了翔,老犯错,最后终于0ms

  • 0
    @ 2016-08-23 18:30:29

    Pascal超短代码
    var n,i,j:longint; s:string; x:char;
    a:array ['0'..'9'] of longint;
    begin
    readln(n,x,x);
    for i:=1 to n do
    begin
    str(i,s);
    for j:=1 to length(s) do
    inc(a[s[j]]);
    end;
    write(a[x]);
    end.

  • 0
    @ 2016-07-13 10:32:20

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int main(){
    int n,x;
    int count=0;
    cin>>n>>x;
    for(int i=1;i<=n;i++)
    {
    int k=i;
    do{
    if(k%10==x)count=count+1;

    k=k/10;
    }while(k);

    }
    cout<<count;
    return 0;
    }

  • 0
    @ 2016-07-12 22:18:08

    给大家一个数字转字符串的函数
    str(x,s);
    x---数字 s---字符串
    例:str(123,s);
    则s='123'

  • 0
    @ 2016-07-12 22:12:22

    program ym;
    var n,m,l,s,i,j:longint;
    a,t:string;
    begin
    readln(n,m);
    a:=chr(m+48);
    s:=0;
    for i:=1 to n do
    begin
    str(i,t);
    l:=length(t);
    for j:=1 to l do
    if t[j]=a then s:=s+1;
    end;
    write(s);
    end.

  • 0
    @ 2016-07-11 11:44:12

    var
    n,x,i,sum:longint;
    s:ansistring;
    procedure ok(s:ansistring);
    var j:longint;
    begin
    for j:=1 to length(s) do
    if s[j]=chr(x+48) then inc(sum);
    end;
    begin
    readln(n,x);
    for i:=1 to n do
    begin
    str(i,s);
    ok(s);
    end;
    writeln(sum);
    end.

    过程部分把s[j]=chr(x+48)写成了s[j]='1',没过,以为longint不行,开int64没去编译过就交上去,结果有没过~~~如此水的题目,我竟然测了三次。。。太失败了

  • 0
    @ 2016-05-18 20:33:19

    小田君又来发题解啦~~~
    简单的计数问题,附代码:
    #include <cstdio>

    int Count(int n,int x){
    int cnt = 0;
    while(n != 0){
    if(n%10 == x) cnt++;
    n /= 10;
    }
    return cnt;
    }

    int main(){
    int n,x,cnt = 0;
    scanf("%d %d",&n,&x);
    for(int i = 1; i <= n; i++) cnt += Count(i,x);
    printf("%d",cnt);

    return 0;
    }

  • 0
    @ 2016-05-02 18:06:45

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    int cnt=0;
    int getx(int x,int i){
    int cnt1=0;
    while(i>0){
    if(i%10==x)
    cnt1++;
    i/=10;
    }
    return cnt1;
    }
    int main(){
    int n,x;
    cin>>n>>x;
    for(int i=1;i<=n;i++)
    cnt+=getx(x,i);
    cout<<cnt;
    return 0;
    }

  • 0
    @ 2016-04-12 22:06:26

    var n,x,i,j,num:longint; s:string;
    begin
    readln(n,x); num:=0;
    for i:=1 to n do
    begin
    str(i,s);
    for j:=1 to length(s) do
    if s[j]=chr(48+x) then
    inc(num);
    end;
    writeln(num);
    end.

  • 0
    @ 2016-04-08 19:05:16

    【水】【C】
    #include<stdio.h>
    int main()
    {
    int n,x,i,j,a,ans=0,mod=1;
    scanf("%d%d",&n,&x);
    for(i=1;i<=n;i++)
    {

    a=i;
    while(a>0)
    {
    if(a%10==x) ans++;
    a=a/10;
    }
    }
    printf("%d",ans);
    return 0;
    }

  • 0
    @ 2016-02-22 13:33:22

    正则表达式就是好用


    import java.io.*;
    import java.util.*;
    import java.util.regex.*;
    public class Main {
        public static void main(String[] args) {
            Scanner sc=new Scanner(new BufferedReader(new InputStreamReader(System.in)));
            final int end=sc.nextInt();
            int count=0;
            Pattern p=Pattern.compile(sc.next());
            for (int i = 1; i <=end; i++) {
                Matcher m=p.matcher(Integer.toString(i));
                while(m.find())
                    count++;
            }
            System.out.println(count);
        }
    }
    
  • 0
    @ 2016-02-19 12:56:56

    整个题目归功于sprintf
    c
    #include <stdio.h>
    int main(){
    int n,num,i,j,ans = 0;
    scanf("%d %d",&n,&num);
    char s[1000010];
    for(i = 1;i<=n;i++){
    sprintf(s+1, "%d",i);
    for(j = 1;s[j];j++)
    if(s[j] == num+48) ans++;
    }
    printf("%d\n",ans);
    return 0;
    }

  • 0
    @ 2016-02-18 11:16:38

    题解

    ```
    /* ***********************************************
    Author :guanjun
    Created Time :2016/2/18 11:03:23
    File Name :vijosp1848.cpp
    ************************************************ */
    #include <iostream>
    #include <cstring>
    #include <cstdlib>
    #include <stdio.h>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <set>
    #include <map>
    #include <string>
    #include <math.h>
    #include <stdlib.h>
    #include <iomanip>
    #include <list>
    #include <deque>
    #include <stack>
    #define ull unsigned long long
    #define ll long long
    #define mod 90001
    #define INF 0x3f3f3f3f
    #define maxn 10000+10
    #define cle(a) memset(a,0,sizeof(a))
    const ull inf = 1LL << 61;
    const double eps=1e-5;
    using namespace std;

    bool cmp(int a,int b){
    return a>b;
    }
    int main()
    {
    #ifndef ONLINE_JUDGE
    //freopen("in.txt","r",stdin);
    #endif
    //freopen("out.txt","w",stdout);
    int n,x,a;
    while(cin>>n>>x){
    ll num=0;
    for(int i=1;i<=n;i++){
    a=i;
    //cout<<a<<endl;
    while(a>0){
    if(a%10==x)num++;
    a/=10;
    }
    }
    printf("%lld\n",num);
    }
    return 0;
    }

  • 0
    @ 2016-01-24 11:42:07

    program p1848;
    var s:string;
    题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题
    题题题题题题题题题题题题题题题题题题题题题题题题题题题题水水水水题题题题题
    题题题题题题题题题题题题题题题题题题题题题题题题水水水水水水水水水题题题题
    题题题题题题题题题题题题题题题题题题水水水水水水水水水水水水水水水题题题题
    题题题题题题题题题题题题题题题题水水水水水水水水水水水水水水水题题题题题题
    题题题题题题题题题题题水水水水题水水水水水水水水水水水题题题题题题题题题题
    题题题题题题题题水水水水水水水题水水水题题水水水水水题题题题题题题题题题题
    题题题水水水水水水水水水水水水题题题题题题水水水水题题题题题题题题题题题题
    题水水水水水水水水水水水水水水题题题题题题水水水水题题题题题题题题题题题题
    题水水水水水水水水水水水水题题题题题题题水水水水水水水水水水水题题题题题题
    题水水水水水水水水水水水水题题题题题题水水水水水水水水水水水水水水题题题题
    题题水水水水水水水水水水题题题题题水水水水水水题题题水水水水水水水题题题题
    题题题题题题题题水水水水题题题题题水水水水题题题题题题水水水水水题题题题题
    题题题题题题题题水水水水题题题题水水水水题题水水题题题水水水水水题题题题题
    题题题题题题题题水水水水题题题题水水水水题题水水水水题水水水水水题题题题题
    题题题题题题题题水水水水题题题题水水水水题题水水水水题水水水水水题题题题题
    题题题题题题题题水水水水题题题题水水水水题题水水水题题水水水水水题题题题题
    题题题题题题题题水水水水题题题题水水水水题题水水水题题水水水水水题题题题题
    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题
    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题
    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题
    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题
    题题题题题题题题水水水水题题题题水水水题题水水水水题题水水水水水题题题题题
    题题水水题题题水水水水水题题题题水水水题题水水水题题题水水水水水题题题题题
    题题水水水水水水水水水水题题题题题水水题题水水题题题题水水水水水题题题题题
    题题题水水水水水水水水水题题题题题题题题水水水题题题题水水水水题题题题题题
    题题题题题水水水水水水水题题题题题题题题水水水题水水水水题题题题题题题题题
    题题题题题题水水水水水水题题题题题题题水水水水题题水水水水题题题题题题题题
    题题题题题题题题题水水水题题题题题题水水水水水题题题水水水水水水水题题题题
    题题题题题题题题题题题题题题题题水水水水水水题题题题题水水水水水水题题题题
    题题题题题题题题题题题题题题题水水水水水水题题题题题题水水水水水水水题题题
    题题题题题题题题题题题题题题水水水水水题题题题题题题题题水水水水水水题题题
    题题题题题题题题题题题题题水水水水水题题题题题题题题题题题水水水水题题题题
    题题题题题题题题题题题题水水水题题题题题题题题题题题题题题题水水水题题题题
    题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题
    c:char;

    n:longint;
    t: int64;
    a,i,j:longint;
    begin
    readln(n,a);
    str(a,s);
    c:=s[1];t:=0;

    for i:=1 to n do

    begin

    str(i,s);

    for j:=1 to length(s) do
    if s[j]=c then t:=t+1;
    end;
    writeln(t);
    end.

  • 0
    @ 2015-12-13 15:36:45

    编译成功

    Free Pascal Compiler version 2.6.2 [2013/02/12] for i386
    Copyright (c) 1993-2012 by Florian Klaempfl and others
    Target OS: Win32 for i386
    Compiling foo.pas
    Linking foo.exe
    14 lines compiled, 0.1 sec , 28032 bytes code, 1628 bytes data

    测试数据 #0: Accepted, time = 15 ms, mem = 4528 KiB, score = 10

    测试数据 #1: Accepted, time = 0 ms, mem = 4528 KiB, score = 10

    测试数据 #2: Accepted, time = 46 ms, mem = 4528 KiB, score = 10

    测试数据 #3: Accepted, time = 0 ms, mem = 4528 KiB, score = 10

    测试数据 #4: Accepted, time = 62 ms, mem = 4528 KiB, score = 10

    测试数据 #5: Accepted, time = 31 ms, mem = 4528 KiB, score = 10

    测试数据 #6: Accepted, time = 0 ms, mem = 4528 KiB, score = 10

    测试数据 #7: Accepted, time = 46 ms, mem = 4528 KiB, score = 10

    测试数据 #8: Accepted, time = 78 ms, mem = 4528 KiB, score = 10

    测试数据 #9: Accepted, time = 109 ms, mem = 4528 KiB, score = 10

    Accepted, time = 387 ms, mem = 4528 KiB, score = 100

    代码
    var j,i,n,x:longint;
    a:array[1..1000000]of longint;
    begin
    readln(n,x);
    j:=0;
    for i:=1 to n do a[i]:=i;
    for i:= 1 to n do if a[i]=x then j:=j+1
    else while a[i]<>0 do
    begin
    if a[i] mod 10=x then j:=j+1;
    a[i]:=a[i] div 10;
    end;
    writeln(j);
    end.

信息

ID
1848
难度
5
分类
(无)
标签
递交数
16398
已通过
5731
通过率
35%
被复制
33
上传者