前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >牛客系列之变种水仙花数与删除序列中的某个数

牛客系列之变种水仙花数与删除序列中的某个数

作者头像
用户11036582
发布2024-03-21 18:39:41
680
发布2024-03-21 18:39:41
举报

给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行!!! 铁铁们,成功的路上必然是孤独且艰难的,但是我们不可以放弃,远山就在前方,但我们能力仍然不足,所有我们更要奋进前行!!! 今天我们更新了刷题内容

一、变种水仙花数

水仙花数我们都知道是什么,就是比如一个三位数,然后第一个数的三次方加第二个数的三次方加第三个数的三次方等于这个数,然后什么是变种水仙花数呢?下面我们来一起看一下吧。

这就是变种水仙花数,我们先来看一下这个数究竟该怎么去做呢,我们可以看到,三位数需要两个式子相加,四位数需要三个,所以五位数就需要四个了,然后我们知道是怎样一个形式相加,这个题就不难了,下面我们就来看一下这个题的代码吧,我给大家准备了两个版本,C语言和C++版本

C语言版本:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
 
void dfs(int num)
{
    if (num > 99999)
    {
        return;
    }
    if (((num / 10) * (num % 10) + (num / 100) * (num % 100) + (num / 1000) * (num % 1000) + (num / 10000) * (num % 10000)) == num)
    {
        printf("%d ", num);
    }
    dfs(num + 1);
}
 
int main()
{
    dfs(10000);
    return 0;
}#include <stdio.h>
#include <stdlib.h>
 
void dfs(int num)
{
    if (num > 99999)
    {
        return;
    }
    if (((num / 10) * (num % 10) + (num / 100) * (num % 100) + (num / 1000) * (num % 1000) + (num / 10000) * (num % 10000)) == num)
    {
        printf("%d ", num);
    }
    dfs(num + 1);
}
 
int main()
{
    dfs(10000);
    return 0;
}

C++版本:

代码语言:javascript
复制
#include <iostream>
using namespace std;

int check_Lily(int n)
{
    int sum=0;
    int a=(n/10000)*(n%10000);
    int b=(n/1000)*(n%1000);
    int c=(n/100)*(n%100);
    int d=(n/10)*(n%10);
    if((a+b+c+d)==n)return 1;
    else return 0;
}

int main()
{
    for(int i=10000;i<=99999;i++)
    {
        if(check_Lily(i)==1)
        {
            printf("%d ",i);
        }

    }


    return 0;
}#include <iostream>
using namespace std;

int check_Lily(int n)
{
    int sum=0;
    int a=(n/10000)*(n%10000);
    int b=(n/1000)*(n%1000);
    int c=(n/100)*(n%100);
    int d=(n/10)*(n%10);
    if((a+b+c+d)==n)return 1;
    else return 0;
}

int main()
{
    for(int i=10000;i<=99999;i++)
    {
        if(check_Lily(i)==1)
        {
            printf("%d ",i);
        }

    }


    return 0;
}

这就是我们变种水仙花数的题解了,希望对大家有一定的帮助!

二、删除序列中的某个数字

这个题理解起来就要简单许多了,下面我们直接来我们的题目吧。

废话不多说,直接上代码,依然是两个版本:

C语言版本:

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    int n,x;
    scanf("%d",&n);
    int arr[n],i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    scanf("%d",&x);
    for(i=0;i<n;i++)
            arr[i]^=x;
    for(i=0;i<n;i++)
    {
        if(arr[i]!=0)
            printf("%d ",arr[i]^x);
    }
    return 0;}
#include<stdio.h>
int main()
{
    int n,x;
    scanf("%d",&n);
    int arr[n],i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    scanf("%d",&x);
    for(i=0;i<n;i++)
            arr[i]^=x;
    for(i=0;i<n;i++)
    {
        if(arr[i]!=0)
            printf("%d ",arr[i]^x);
    }
    return 0;}

C++版本:

代码语言:javascript
复制
#include <iostream>
using namespace std;

int main() 
{
   int n=0;cin>>n;
   int*arr=(int*)malloc(sizeof(int)*n);
   for(int i=0;i<n;i++)
   {
    cin>>arr[i];
   }
   int deletes;cin>>deletes;
   for(int i=0;i<n;i++)
   {
    if(arr[i]!=deletes)
    {
        cout<<arr[i]<<" ";

    }
   }


}

#include <iostream>
using namespace std;

int main() 
{
   int n=0;cin>>n;
   int*arr=(int*)malloc(sizeof(int)*n);
   for(int i=0;i<n;i++)
   {
    cin>>arr[i];
   }
   int deletes;cin>>deletes;
   for(int i=0;i<n;i++)
   {
    if(arr[i]!=deletes)
    {
        cout<<arr[i]<<" ";

    }
   }


}

总结:

本次我们讲述了两道题目,分别是变种水仙花数和删除序列中的某个数字,这两道题目的整体难度较小,所以希望大家可以搞懂他们,哪里不懂随时在评论区里问我,一定一一回复!

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、变种水仙花数
    • C语言版本:
      • C++版本:
      • 二、删除序列中的某个数字
        • C语言版本:
          • C++版本:
          • 总结:
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com