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

9efbcbc3d25747719da38c01b3fa9b4f.gif

 c语言中的小小白-CSDN博客c语言中的小小白关注算法,c++,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm=1001.2014.3001.5343

给大家分享一句我很喜欢我话:

知不足而奋进,望远山而前行!!!

铁铁们,成功的路上必然是孤独且艰难的,但是我们不可以放弃,远山就在前方,但我们能力仍然不足,所有我们更要奋进前行!!!

今天我们更新了刷题内容,

🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

一、变种水仙花数

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

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

C语言版本:

#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++版本:

#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语言版本:

#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++版本:

#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]<<" ";

    }
   }


}

总结:

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

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值