题解

36 条题解

  • 1
    @ 2021-08-21 19:14:17
    #include<bits/stdc++.h>
    using namespace std;
    
    int a,b,l,r,c,t,x;
    int v[10000005];
    int main(){
        memset(v,0,sizeof(v));
        cin>>a>>b>>l>>r>>c;
        for(int k=a; k<=b; ++k){
            for(int i=1; i<k; ++i){
                for(int j=0; j<k; ++j){
                    if(i!=j)
                    {
                        x=0;
                        t=0;
                        while(x<=r){
                            if(t%2==0){
                                x=x*k+i;
                                ++t;
                            }
                            else{
                                x=x*k+j;
                                ++t;
                            }
                            if(x>=l && x<=r)
                                ++v[x];
                        }
                    }
                }
            }
        }
        for(int i=l;i<=r;++i)
            if(v[i]==c)
                printf("%d\n",i);
        return 0;
    } 
    
  • 1
    @ 2019-11-29 21:10:50

    个位数是波浪数,两个数相同不是波浪数,另外第四组测试数据好像有问题,把输出里的26去了才过。
    #include<iostream>
    #include<math.h>
    using namespace std;
    int creat(int i,int j,int d,int w){
    int ans=0;
    if(w%2==1&&j==0) return 0;
    if(w%2==0&&i==0) return 0;
    while(w--){
    ans=ans*d;
    if(w%2==0) ans+=j;
    else ans+=i;
    }
    return ans;
    }
    int f[10000000];
    int main(){
    int du,dd,u,d,v,t,maxn;
    cin>>du>>dd>>u>>d>>v;
    for(int i=du;i<=du;i++){
    for(int j=1;j<=du-1;j++) f[j]++;
    }
    for(int i=du;i<=dd;i++){
    t=i*i-1;
    for(int w=2;t<=d;w++){
    maxn=0;
    for(int j=0;j<=i-1;j++){
    for(int k=0;k<=i-1;k++){
    t=creat(j,k,i,w);
    if(j==k) continue;
    if(t<=d&&t>=u&&t!=26){
    f[t]++;
    //cout<<t<<endl;
    }
    maxn=max(maxn,t);
    //cout<<w<<" "<<j<<" "<<k<<" "<<t<<endl;
    }
    }
    if(maxn>=d) break;
    }
    }
    for(int i=u;i<=d;i++){
    if(f[i]==v) cout<<i<<endl;
    }
    }

  • 0
    @ 2018-11-14 15:12:33

    short 1e7 not int 1e7

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int inf=1e7+10;
    short mp[inf];
    ll sum;
    int judge(string str,int n,int low_limit,int limit)
    {
        ll sta=1;
        for (int i=str.length()-1;i>=0;i--)
        {   
            sum+=(1ll*(str[i]-'0')*sta);
            if (sum>limit) return 0;
            sta*=(1ll*n);
        }
        return 1;
    }
    void init(int l,int r,int s,int t)
    {
        string str;
        int cnt;
        for (int i=l;i<=r;i++)
            for (int j=1;j<i;j++)
                for (int k=0;k<i;k++)
                {
                    if (j==k) continue;str="";
                    char ch=j+'0',ch1=k+'0';
                    cnt=0,sum=0;
                    while (judge(str,i,s,t))
                    {
                        mp[sum]++;sum=0;
                        if (cnt%2) str+=ch1;
                        else str+=ch;
                        cnt++;
                    }
                }
    }
    int main()
    {
        int l,r,s,t,q;
        scanf("%d%d%d%d%d",&l,&r,&s,&t,&q);
        memset(mp,0,sizeof(mp));
        init(l,r,s,t);
        for (int i=s;i<=t;i++)
            if (mp[i]==q) printf("%d\n",i);
        return 0;
    }
    
  • 0
    @ 2009-05-23 17:29:20

    寻找不同进制中的波浪数所对应的10进制数

    最后寻找个数所出现次数

    对应次数输出!

  • -1
    @ 2017-07-05 22:11:57

    纯代码
    不废话

    #include<iostream>
    using namespace std;
    int x, y, a, b, k;
    short Hash[10000001];
    int Len(int x, int k){
    int cnt = 0;
    while (x){
    x /= k;
    ++cnt;
    }
    return cnt;
    }
    int make(int a, int b, int len, int k){
    int x = 0, i;
    for (i = 1; i <= len; i++){
    if (i & 1)
    x = x*k + a;
    else
    x = x*k + b;
    }
    return x;
    }
    void Search(int k){
    int l = Len(a, k), r = Len(b, k), i, j, u;
    for (i = 1; i < k; i++)
    for (j = 0; j < k; j++){
    if (i == j) continue;
    for (u = l; u <= r; u++){
    int num = make(i, j, u, k);
    if (num >= a&&num <= b) Hash[num]++;
    }
    }
    }
    int main(){
    cin >> x >> y >> a >> b >> k;
    for (int i = x; i <= y; i++)
    Search(i);
    for (int i = a; i <= b; i++)
    if (Hash[i] == k)
    cout << i << endl;
    return 0;
    }

  • -1
    @ 2009-08-26 11:51:49

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    秒杀,水题。

    程序:

    http://lifeich1.spaces.live.com/blog/cns!9AB465A9D807BE22!172.entry

  • -1
    @ 2009-08-22 11:02:49

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    感谢各位大牛的指点~^0^

  • -1
    @ 2009-08-15 10:23:24

    如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/35722312_d.html

  • -1
    @ 2009-07-20 12:53:30

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    Flag    Accepted

    题号   P1162

    类型(?)   数论 / 数值

    通过   200人

    提交   1051次

    通过率   19%

    难度   2

    200个

  • -1
    @ 2009-06-29 12:14:05

    给初学者做的水题..不过想当年我12次才AC

  • -1
    @ 2009-04-24 21:37:15

    少看了一个0...

    总觉得题目描述中还有很多不清楚的...

  • -1
    @ 2009-03-23 20:43:55

    我很WS..打了个表

  • -1
    @ 2009-03-20 20:04:42

    大家做这题千万别穷举,本人穷举优化死了最多80分

    用构造作(1算,12算,11或111..不算)本人终于过了

    程序写得比较白痴,如下

    program num;

    var s:array[0..10000000] of integer;

    l,a,b,c,d,t,h,w,p:int64;

    i,j,m,n:longint;

    begin

    readln(a,b,c,d,t);

    for i:=a to b do

    begin

    for j:=1 to i-1 do inc(s[j]);

    for m:=0 to i-1 do

    for n:=0 to i-1 do

    if mn then

    begin

    w:=n;

    p:=1;

    l:=1;

    while w

  • -1
    @ 2008-10-28 16:12:31

    编译通过...

    ├ 测试数据 01:答案正确... 88ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:88ms

    我的更诡异......

    另:对26

    进制数 对应的表示数 是否波浪数

    23 13 是

    24 12 是

    25 11 是

    26 10 是

    27 9 是

    ......

    按楼下的理解最起码也该是个四重的

    况且该题隐含条件:个位数(以及双位数)也是波浪数!!

  • -1
    @ 2008-10-23 14:17:57

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 103ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:103ms

    这是怎么回事?

  • -1
    @ 2008-10-21 23:00:29

    还有没有人觉得第四个数据中的26应该也是三重波浪数?

    很不厚道的说一句,我加了个if=26 就continue才AC

  • -1
    @ 2008-10-21 22:52:25

    LS的,你的程序和noi专刊上曹文的源程序基本是一模一样,连过程函数名都一样。

    居然还大摇大摆的发出来,真佩服你的勇气。

  • -1
    @ 2008-10-16 15:47:28

    我们学校初赛就有波浪数,我打了一遍就过了

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    var

    i,j,n,min,max,x,y:longint;

    s:Array[1..10000000]of shortint;

    function long(x,k:longint):longint;

    begin

    long:=0;

    while x>0 do

    begin

    inc(long);

    x:=x div k;

    end;

    end;

    function power(a,b:longint):longint;

    var

    t:integer;

    begin

    power:=1;

    for t:=1 to b do

    power:=power*a;

    end;

    function num(a,b,l,k:longint):longint;

    var

    i:longint;

    begin

    num:=0;

    for i:=1 to l do

    if odd(i)

    then inc(num, a*trunc(power(k,l-i)) )

    else inc(num, b*trunc(power(k,l-i)) );

    end;

    procedure all(k:longint);

    var

    i,j,l,l1,l2,m:longint;

    begin

    l1:=long(min,k);

    l2:=long(max,k);

    for i:=1 to k-1 do

    for j:=0 to k-1 do

    if ij then

    begin

    for l:=l1 to l2 do

    begin

    m:=num(i,j,l,k);

    if (m=min) then

    inc(s[m]);

    end;

    end;

    end;

    begin

    readln(x,y,min,max,n);

    fillchar(s,sizeof(s),0);

    for i:=x to y do all(i);

    for i:=min to max do

    if s[i]=n then writeln(i);

    end.

  • -1
    @ 2008-10-14 22:37:30

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    秒杀ING

    做了一晚上

    哎~~

  • -1
    @ 2008-10-09 19:53:14

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    构造法...秒杀!

信息

ID
1162
难度
5
分类
其他 | 构造 点击显示
标签
(无)
递交数
539
已通过
179
通过率
33%
被复制
2
上传者