习题集链接:https://ac.nowcoder.com/acm/contest/18839

点不到不负责()

低情商:懒狗作者
高情商:给读者独立思考空间,达到授人以渔的效果(确信)

1046和1048摸了,大概

1001
打表

1002
打表,但是正常写的话挺有意思
贴个代码看得懂的有兴趣可以看

#include <iostream>
#include <math.h>
using namespace std;

void reset(int cnt[]){

    int i;

    for(i=1;i<10;i++){

        cnt[i]=0;
    }
}

bool judge(int n,int cnt[]){

    int i,tmp[10]={0};

    for(;;){

        if(cnt[n%10] || tmp[n%10]){

            return false;
        }

        tmp[n%10]++;

        n/=10;

        if(!n){

            break;
        }
    }

    for(i=1;i<10;i++){

        cnt[i]+=tmp[i];
    }

    return true;
}

int main()
{
    int a,b,i,cnt[10]={1},tmp[10]={1};

    for(a=1000;a<10000;a++){

        reset(cnt);

        if(judge(a,cnt)){

            for(b=1;b*b<a;b++){

                if(!(a%b) && judge(b,tmp)){

                    if(judge(a/b,tmp)){

                        for(i=1;i<10;i++){

                            if(cnt[i]+tmp[i] != 1){

                                break;
                            }
                        }

                        if(i==10)cout<<a << " = " << b << " x " <<a/b<<endl;


                    }
                    reset(tmp);
                }
            }
        }
    }

        return 0;
}

(当时不知道有memset)
1003
打表,数空格

1004
打表

1005
可以打表,但没必要

for(i=1;i<=9;i++){
        for(j=1;j<=i;j++){
            if(j!=1){
                printf(" ");
            }
            printf("%d*%d=%2d",j,i,j*i);
        }
        printf("\n");
    }

1006
在“,”,\,前加转义字符‘\’

1007
c格式"%.3f%%",c++格式<<setprecision(3)<<setiosflags(ios::fixed)<<

1008
打表

1009
i=0;i<3;i++
直接打也行

1010
int

1011
double,同1007

1012
不爆int

1013
不用特判b==0,测试点没给

1014
%

1015
类型转换,然后同1007

1016
1013+1014

1017
a<=b,不用绝对值 (题外话:好诗)

1018
x%7+1

1019
特判星期天
((a+b)%7?(a+b)%7:7)

1020

char *s="hello world";

while(*s!='\0'){

        putchar(++*s);

        s++;
    }

打表也行吧。。

1021
c格式%x,c++格式<<hex<<

1022
%10

1023
/10%10

1024
cout<<n%10;n/=10;

1025
输出格式

1026
整个杂技,记得给tot赋初值0

while(~scanf("%d",&n))tot+=n;/*scanf在输入结束时返回EOF(-1)*/

1027
(up+down)*height/2,留意类型转换和输出格式

1028
2(a+b)和ab

1029
还是套公式

1030
海伦

1031
3.156e7*200会爆int,所以用long long

1032
/3600;%3600/60;%60

1033
(double)5/9*(a-32)

1034
262144*a,int够用

1035
0.2a+0.3b+0.5c

1036

cout<<(a>b?a>c?a:c:b>c?b:c);

建议max,max挺好的,这个只是我个人习惯

1037
最大最小分一组,我用到了快排所以丢个完整代码

#include <bits/stdc++.h>
using namespace std;

int cmp(const void *a,const void *b){

    return *(int*)a-*(int*)b;
}

int main()
{
    int L[4],i;

    for(i=0;i<4;i++){

        cin>>L[i];
    }

    qsort(L,4,sizeof(int),cmp);

    cout<<fabs(L[3]+L[0]-L[1]-L[2]);

    return 0;
}

可能小题大做了

1038
(int)sqrt(a)

1039

(sqrt(a*b/c)+sqrt(a*c/b)+sqrt(b*c/a))*4

1040
3*pow(n,1.0/3)

1041
n+1
一次方

1042

(n+1)/2

a对半折=》b-a(奇数b会比a大1)=》a清零

1043
又到了我第二喜欢的三目运算符环节

((a[0]>a[4]?a[4]:a[0])+(a[1]>a[5]?a[5]:a[1])+(a[2]>a[3]?a[3]:a[2]))//看个思路就行

(题外话:1202年竟然能看到赌博默示录相关)

1044
两天三个为一组,n%3==2可以看成12...12131

2*(n/3)+(n%3?1:0)

1045
两头跑,010101

(n-1)/2

1046
(待补充)我看物理头疼

1047
还是那句话:

cout<<(n<m?n:m)<<' '<<(m+n-x>0?m+n-x:0);//x是总人数

1048
(待补充)我看语文也头疼