自留(不要误点

7-39 数列求和-加强版

分数 20

全屏浏览题目

切换布局

作者 DS课程组单位 浙江大学

给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AAANA)。例如A=1, N=3时,S=1+11+111=123。

输入格式:

输入数字A与非负整数N

输出格式:

输出其N项数列之和S的值。

输入样例:

1 3

输出样例:

123

代码

#include<stdio.h>
int main(){
    int k,n;
    scanf("%d%d",&k,&n);
    int a[100005]={0};
    if(n==0)printf("0");
    int i,temp=0;
    for(i=0;i<n;i++){
    a[i]=((n-i)*k+temp)%10;
    temp=((n-i)*k+temp)/10;
    }
    if(temp!=0)
    printf("%d",temp);
    for(i=n-1;i>=0;i--)printf("%d",a[i]);
    return 0;
}

7-32 数组元素循环右移问题

分数 20

全屏浏览题目

切换布局

作者 DS课程组单位 浙江大学

一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(ANMAN−1A0A1⋯ANM−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。

输出格式:

在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

6 2
1 2 3 4 5 6

输出样例:

5 6 1 2 3 4

代码

#include<stdio.h>
int main()
{
    int m,n;
    scanf("%d %d",&m,&n);
    int a[m];
    for(int i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
    }
    n%=m;
    for(int i=0;i<m;i++)
    {
        printf("%d",a[(m-n+i)%m]);
        if(i!=m-1)printf(" ");
    }
return 0; 
}

7-18 到底有多二

分数 15

全屏浏览题目

切换布局

作者 陈越单位 浙江大学

一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一个给定整数到底有多二。

输入格式:

输入第一行给出一个不超过50位的整数N。

输出格式:

在一行中输出N犯二的程度,保留小数点后两位。

输入样例:

-13142223336

输出样例:

81.82%

代码

#include<stdio.h>
#include<string.h>
int main() {
    char s[55];
    scanf("%s", s);
    int len = strlen(s);
    int i, cnt;
    double p1, p2;
    p1 = p2 = 1.0;
    if (s[0] == '-')
        p1 = 1.5;
    if ((s[len - 1] - '0') % 2 == 0)
        p2 = 2.0;
    for (i = cnt = 0; s[i]; i++)
        if (s[i] == '2')
            cnt++; 
    if (p1 == 1.0)
        printf("%.2f%%", 1.0 * cnt / len * p1 * p2 * 100);
    else
        printf("%.2f%%", 1.0 * cnt / (len - 1) * p1 * p2 * 100);
    return 0;
}

7-11 兔子繁衍问题

分数 15

全屏浏览题目

切换布局

作者 徐镜春单位 浙江大学

一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?

输入格式:

输入在一行中给出一个不超过10000的正整数N

输出格式:

在一行中输出兔子总数达到N最少需要的月数。

输入样例:

30

输出样例:

9

代码

#include<stdio.h>
int main(){
    int a=1,b=1,s=2,n,m=3;
    scanf("%d",&n);
    if(n==1)printf("1");
    else{
        while(s<n){
            m++;
            a=b;
            b=s;
            s=s+a;
        }
        printf("%d",m);
    }
return 0;
}

打印沙漏

分数 20

全屏浏览题目

切换布局

作者 陈越单位 浙江大学

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

*****
 ***
  *
 ***
*****

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:

输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

输出格式:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:

19 *

输出样例:

*****
 ***
  *
 ***
*****
2

代码1(废

#include<stdio.h>
int row(int n);
int num(int n,int r);
int main(void){
    int n,r,count;
    int i,j;
    char ch;
    
    scanf("%d %c",&n,&ch);
    r=row(n);
    for(i=1;i<=r;i++){
        for(j=1;j<i;j++)
            printf(" ");
        for(j=1;j<=2*r-2*i+1;j++)
            printf("%c",ch);
        printf("\n");
    }
    for(i=2;i<=r;i++){
        for(j=1;j<=r-i;j++)
            printf(" ");
        for(j=1;j<=2*i-1;j++)
            printf("%c",ch);
        printf("\n");
    }
    count=num(n,r);
    printf("%d",count);
    return 0;
}
int row(int n){
    int r;
    
    n=(n+1)/2;
    for(r=1;n>=0;r++)
        n=n-2*r+1;
    return r-2;
}
int num(int n,int r){
    int i;
    n--;
    for(i=2;i<=r;i++){
        n=n-4*i+2;
    }
    return n;
}

代码2

#include <stdio.h>
#include <math.h>
int main()
{
    int n;
    char c;
    scanf("%d %c", &n, &c);
    int h = sqrt((n + 1) / 2);
    for (int i = 0; i < h; i++)
    {
        for (int j = 0; j < i; j++)
            printf(" ");
        for (int j = 0; j < 2 * (h - i) - 1; j++)
            printf("%c", c);
        printf("\n");
    }
    for (int i = 2; i <= h; i++) 
    {
        for (int j = 0; j < h - i; j++)
            printf(" ");
        for (int j = 0; j < 2 * i - 1; j++)
            printf("%c", c);
        printf("\n");
    }
    printf("%d", n - 2 * h * h + 1);
    return 0;
}

7-4 杨辉三角

分数 10

全屏浏览题目

切换布局

作者 王跃萍单位 东北石油大学

打印n行杨辉三角,n<10。

输入格式:

直接输入一个小于10的正整数n。

输出格式:

输出n行杨辉三角,每个数据输出占4列。

输入样例:

5

输出样例:

   1
   1   1
   1   2   1
   1   3   3   1
   1   4   6   4   1

代码

#include <stdio.h>
#include <stdlib.h>
int main(){
    int s=1,h;
    int i,j;
    scanf("%d",&h);
    printf("   1\n");
    for (i=2;i<=h;s =1,i++){
        printf("   1");
        for (j=1;j<=i-2; j++)
            printf("%4d",(s=(i-j)*s/j));
        printf("   1\n");
    }
    getchar();
    return 0;
}


L1-020 帅到没朋友

当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。

输入格式:

输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(≤10000),为待查询的人数;随后一行中列出M个待查询的ID,以空格分隔。

注意:没有朋友的人可以是根本没安装“朋友圈”,也可以是只有自己一个人在朋友圈的人。虽然有个别自恋狂会自己把自己反复加进朋友圈,但题目保证所有K超过1的朋友圈里都至少有2个不同的人。

输出格式:

按输入的顺序输出那些帅到没朋友的人。ID间用1个空格分隔,行的首尾不得有多余空格。如果没有人太帅,则输出No one is handsome。

注意:同一个人可以被查询多次,但只输出一次。

输入样例1:

3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
8
55555 44444 10000 88888 22222 11111 23333 88888

输出样例1:

10000 88888 23333

输入样例2:

3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
4
55555 44444 22222 11111

输出样例2:

No one is handsome

代码

#include<stdio.h>
int main(void){
    int n,i,j,k,m,flag=1;
    static int peo[100000],p;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        scanf("%d",&k);
        for(j=0;j<k;j++){
            scanf("%d",&p);
            if(k>1)peo[p]++;
        }
    }
    scanf("%d",&m);
    for(i=0;i<m;i++){
        scanf("%d",&p);
        if(peo[p]==0){
            peo[p]++;
            if(flag)printf("%05d",p);
            else printf(" %05d",p);
            flag=0;
        }
    }
    if(flag)printf("No one is handsome\n");
    
    return 0;
}


7-25 正整数A+B

分数 15

全屏浏览题目

切换布局

作者 陈越单位 浙江大学

题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。

输入格式:

输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。

注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。

输出格式:

如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?。

输入样例1:

123 456

输出样例1:

123 + 456 = 579

输入样例2:

22. 18

输出样例2:

? + 18 = ?

输入样例3:

-100 blabla bla...33

输出样例3:

? + ? = ?
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main()
{
    int n;
    ll a,b,x,y,gcd,lcm,f = 1;
    scanf("%d" ,&n);
    scanf("%lld/%lld", &a,&b);
    for(int i = 1; i < n; i ++)
    {
        scanf("%lld/%lld", &x,&y);
        a *= y;
        x *= b;
        a = a + x;
        b = b * y;
        if(a < 0) a = -a, f = -1;
        else f = 1;
        gcd = __gcd(a,b);
        a /= gcd;
        b /= gcd;
        a *= f;
    }
    if(b == 1) {
        printf("%lld\n",a);
    }
    else if(a > b){
        printf("%lld %lld/%lld\n",a / b, a % b , b);
    }
    else {
        printf("%lld/%lld\n",a,b);
    }
    return 0;
}


### 编程资源与社区推荐 对于编程学习者或开发者来说,找到合适的编程资源和社区至关重要。以下是几个值得推荐的方向: #### 1. **官方文档** 官方文档通常是学习任何技术的第一手资料。无论是Android开发[^4]还是CUDA编程[^5],官方文档都能提供权威的技术细节和支持。 - 对于Android开发,Google Developers网站提供了详尽的API指南、教程以及最佳实践。 - CUDA开发者官网则涵盖了从基础入门到高级优化的各种主题,适合不同层次的学习者。 #### 2. **在线课程平台** 一些知名的在线教育平台也提供了高质量的编程课程,帮助用户系统地掌握技能。 - Coursera 和 Udemy 提供了大量由行业专家制作的付费及免费课程。 - edX 上也有许多大学合作推出的计算机科学相关课程。 #### 3. **开源项目仓库** 参与实际项目的构建是提升编码能力的有效途径之一。GitHub作为全球最大的代码托管平台,不仅可以让您浏览其他人的作品,还可以贡献自己的力量参与到真实的软件工程当中去。 #### 4. **专业技术论坛** 遇到难题时,向更广泛的互联网求助往往能获得意想不到的帮助。 - Stack Overflow 是程序员解决问题的好地方,几乎所有的常见问题在这里都已经有了答案。 - Reddit 的 r/learnprogramming 子版块非常适合初学者提问并得到反馈。 #### 5. **本地Meetup和技术大会** 参加线下聚会或者线上直播分享会也是不错的选择,可以直接与其他爱好者交流心得体验最新趋势动态。 --- ```python def find_resources_or_communities(): resources = [ {"name": "Official Documentation", "link": "#"}, {"name": "Online Courses Platforms", "examples": ["Coursera", "Udemy"]}, {"name": "Open Source Project Repositories", "example": "GitHub"} ] communities = [ {"type": "Q&A Forums", "popular ones": ["StackOverflow", "Reddit/rLearnProgramming"]}, {"type": "Local Meetups & Tech Conferences", "description": "Great for networking."} ] return f"Resources: {resources}\nCommunities:{communities}" ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值