【PTA-训练day17】L2-029 特立独行的幸福 + L1-071 前世档案

news2024/11/27 18:41:56

L2-029 特立独行的幸福 - 递归/模拟 + 判断素数

PTA | 程序设计类实验辅助教学平台

思路:

  • 第一层循环是边界循环  for(int i=l;i<=r;i++)
  • 枚举每一个i 第二层循环是判断这个i是不是幸福数
  • st数组 判定 i 这个数在迭代过程中是否出现循环 如果出现循环及时跳出
  • 比如: 29 迭代得到 85、89、145、42、20、4、16、37、58、89
  • nofirst数组 判定这个数是不是依附数 
  • 比如:19、82681001
  • xf[i]数组存i的独立值 独立值=(如果i是素数 倍数为2)bei * 依附数个数
  • 遍历完区间的所有数 (如果你不遍历完,有的数是依附数,但是不遍历完筛不出来)
  • 最后再次遍历区间 if ( nofirst[i]&&xf[i]>0 ) 则该数是特立独行的幸福数 输出

1、递归

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

const int N=1e4+10;
bool st[N],nofirst[N]; //st数组判断是否出现循环 nofirst数组判断该数是否是第一个 true表示不是第一个
int xf[N];//统计幸福数的独立性

bool isprime(int n)
{
    if(n<2) return false;
    for(int i=2;i<=n/i;i++) if(n%i==0) return false;
    return true;
}

int deep(int x,int num)
{
    if(x==1) return num;
    if(st[num]) return 0;
    int sum=0;
    while(x)
    {
        sum+=pow(x%10,2);
        x/=10;
    }
    nofirst[sum]=true;
    st[sum]=true;
    return deep(sum,num+1);
}

int main()
{
    bool f=false;
    int l,r;
    cin>>l>>r;
    for(int i=l;i<=r;i++)
    {
        if(nofirst[i]) continue;
        memset(st,false,sizeof st);
        xf[i]=deep(i,0);
        if(isprime(i)) xf[i]*=2;
    }
    for(int i=l;i<=r;i++)
        if(!nofirst[i]&&xf[i]>0) 
            {
                cout<<i<<" "<<xf[i]<<endl;
                f=true;
            }
    if(!f) cout<<"SAD";
}

2、模拟 

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

const int N=1e4+10;
bool st[N],nofirst[N]; //st数组判断是否出现循环 nofirst数组判断该数是不是依附数
int xf[N];//统计幸福数的独立性

bool isprime(int n)
{
    if(n<2) return false;
    for(int i=2;i<=n/i;i++) if(n%i==0) return false;
    return true;
}

int main()
{
    bool f=false;
    int l,r;
    cin>>l>>r;
    for(int i=l;i<=r;i++)
    {
        if(nofirst[i]) continue; //如果是依附数 不需要
        int bei=1,cnt=0;
        if(isprime(i)) bei=2;
        memset(st,false,sizeof st);
        int t=i;
        while(1)
        {
            int sum=0;
            while(t)
            {
                sum+=pow(t%10,2);
                t/=10;
            }
            nofirst[sum]=true;
            if(st[sum]) break;//如果这个数再次出现过 说明进入死循环 不是幸福数 跳出
            st[sum]=true;
            cnt++; //统计有几个依附初始的数
            if(sum==1)
            {
                xf[i]=bei*cnt;
                break;
            }
            t=sum; //循环继续
        }
    }
    for(int i=l;i<=r;i++)
        if(!nofirst[i]&&xf[i]>0) 
            {
                cout<<i<<" "<<xf[i]<<endl;
                f=true;
            }
    if(!f) cout<<"SAD";
}

!L1-071 前世档案 - 20 - 找规律 + 模拟

PTA | 程序设计类实验辅助教学平台

1、二进制转十进制法

yny——010——2——+1=3

nyy——100——4——+1=5

根据规律 我们只要把yes no串转化为二进制再转化为十进制 再+1就是答案

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

int main()
{
    int q,n;
    int a[35];
    cin>>q>>n;
    while(n--)
    {
        string s;
        cin>>s;
        for(int i=0;i<s.size();i++) //y为0 n为1
            if(s[i]=='y') a[i]=0;
            else a[i]=1;
        int t=q-1;
        int sum=0;
        for(int i=0;i<q;i++) //二进制转化为十进制
        {
            if(a[i]==1) sum+=pow(2,t);
            t--;
        }
        cout<<sum+1<<endl; //结果+1即为答案
    }
}

 2、模拟位置

在每一层

  • 如果是yes 则pos=pos*2-1
  • 如果是no 则pos=pos*2 
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int q,n;
    cin>>q>>n;
    while(n--)
    {
        string s;
        cin>>s;
        int pos=1;
        for(int i=0;i<s.size();i++) 
            if(s[i]=='y') pos=2*pos-1;
            else pos=pos*2;
        cout<<pos<<endl;
    }
}

 

L1-069 胎压监测 - 15

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

int main()
{
    int a[5],minn,yu,maxx=-1,cnt=0,idx;
    for(int i=1;i<=4;i++)
    {
        cin>>a[i];
        maxx=max(maxx,a[i]);
    }
    cin>>minn>>yu;
    for(int i=1;i<=4;i++)
        if(abs(a[i]-maxx)>yu||a[i]<minn)
        {
            idx=i;
            cnt++;
        }
    if(cnt>1) cout<<"Warning: please check all the tires!";
    else if(cnt==1) cout<<"Warning: please check #"<<idx<<"!";
    else cout<<"Normal";
}

L1-067 洛希极限 - 10

这题就是理解有点困难 感觉有高中物理天体那味了

题目给出

0.622 0 1.4-大天体的半径

说人话就是:

0——代表流体 倍数=2.455

1——代表刚体 倍数=1.26

洛希极限 = 0.622*倍数

  • 如果 洛希极限>1.4 说明大天体在小天体内部 大天体会被撕碎 输出T_T
  • 如果 洛希极限<1.4 说明大天体不在小天体内部 大天体不会被撕碎 输出^_^
#include <bits/stdc++.h>
using namespace std;

int main()
{
    double a,d,bei;
    int att;
    cin>>a>>att>>d;
    if(att==0) bei=2.455;
    else bei=1.26;
    double res=bei*a;
    printf("%.2f ",res);
    if(res>d) cout<<"T_T";
    else cout<<"^_^";
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/92047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【TypeScript系列】【一篇就够】TypeScript知识点总结(二)

12 面向对象简介 简而言之&#xff0c;面向对象就是程序之中所有的操作都需要通过对象来完成。 举例来说&#xff0c; 操作浏览器要使用windows对象&#xff1b;操作网页要使用document对象&#xff1b;操作控制台要使用console对象。一切操作都要通过对象&#xff0c;也就是…

nacos--扩展--03--系统参数

nacos–扩展–03–系统参数 1、Nacos Server 配置参数位置&#xff1a;{nacos.home}/conf/application.properties里注意&#xff1a;如果参数名后标注了(-D)的&#xff0c;则表示是 JVM 的参数&#xff0c;需要在{nacos.home}/bin/startup.sh里进行相应的设置。 案例&#xf…

测试用例等级怎么划分?别再傻傻的一脸懵逼

我们都知道测试工程师最基本的能力便是编写测试用例&#xff0c;可是看似简单的用例&#xff0c;后面其实蕴含这个很多人忽略的细节&#xff0c;今天就来说测试里面所蕴含的很多细节。 很多时候不只是测试和测试用例息息相关&#xff0c;开发&#xff0c;产品也有的时候对于测试…

C/C++程序的断点调试 - CodeBlocks

本文以CodeBlocks为例&#xff0c;简述C/C程序断点调试的基本方法和过程。其它的IDE环境&#xff0c;大同小异。 本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载&#xff0c;但需要注明原作者"海洋饼干叔 叔"&#xff1b;本文不允许…

单链表翻转-链表篇

leetcode206单链表的翻转 题目&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出…

如何指定标签在页面中显示的位置

如何指定标签在页面中显示的位置 在HTML页面设计中常常需要调整标签&#xff08;元素&#xff09;的位置&#xff0c;那么&#xff0c;如何指定标签在页面中显示的位置呢&#xff1f; 使用标签的align属性指定标签在页面中显示的位置&#xff0c;如align"left|right|cen…

02加锁源码分析-ReentrantReadWriteLock原理-AQS-并发编程(Java)

文章目录3.1 加锁3.1.1 读锁加锁3.1.1.1 tryAcquireShared()3.1.1.2 readerShouldBlock()3.1.1.3 fullTryAcquireShared()3.1.1.4 doAcquireShared()3.1.2 写锁加锁3.1.2.1 tryAcquire()3.1.2.2 acquireQueued()3.2 加锁示意图3.2.1 先写锁在读锁3.2.2 先读锁在写锁后记3.1 加锁…

全网惟一面向软件测试人员的Python基础教程-Python数据类型中有那些故事呢?

全网惟一面向软件测试人员的Python基础教程 起点&#xff1a;《python软件测试实战宝典》介绍 第一章 为什么软件测试人员要学习Python 第二章 学Python之前要搞懂的道理 第三章 你知道Python代码是怎样运行的吗&#xff1f; 第四章 Python数据类型中有那些故事呢&#xff1f;…

PHP+Laravel框架RabbitMQ简单使用

RabbitMQ安装教程请转到&#xff1a;RabbitMQ安装教程&#xff08;超详细&#xff09; 1、创建生产者 在app/Http/Controllers里创建一个php控制器文件&#xff0c; namespace App\Http\Controllers;use App\Http\Controllers\Controller; //引入amqp扩展 use PhpAmqpLib\Co…

铁路轨道交通智慧管理系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

sklearn基础篇(九)-- 主成分分析(PCA)

1 引言 降维是对数据高维度特征的一种预处理方法。降维是将高维度的数据保留下最重要的一些特征&#xff0c;去除噪声和不重要的特征&#xff0c;从而实现提升数据处理速度的目的。在实际的生产和应用中&#xff0c;降维在一定的信息损失范围内&#xff0c;可以为我们节省大量的…

机器学习项目中Xgboost深入理解(二)梯度及GB的理解

Xgboost 与 GBDT同源&#xff0c;那么所谓的梯度是什么意思呢&#xff1f;G、B又代表什么。 1. 梯度Gradient 梯度是一个向量&#xff08;矢量&#xff09;&#xff0c;表示梯度是方向导数在某一点的最大值。理解为某函数&#xff08;可以指损失函数&#xff09;在某点处的方…

Fluent后处理的色谱设置

PART 1 概述 对物理场的空间分布进行可视化展示&#xff0c;在科研、工程等领域是必不可少的环节。 将物理量不同数值赋予不同色彩&#xff0c;是一种很常见的物理场可视化方法。通过色彩的变化&#xff0c;即可识别物理量的分布规律。 物理量数值和颜色之间的对应关系称为色…

Linux常用指令

目录 1.1关于目录操作的指令 1.2文件操作的指令 1.3创建/删除目录操作 1.4目录/文件的移动/复制/改名 1.5 vim对文件进行编辑 1.1关于目录操作的指令 ls 列出当前目录下都有啥 ls 具体路径或 /注意中间含有一个空格&#xff0c;列出跟目录下或指定路径的内容 ls -l / 以列表的…

mysql日志篇

mysql日志篇1、Undo-log 撤销日志 Undo即撤销的意思&#xff0c;大家通常也习惯称它为回滚日志。如果大家有仔细研究过 MySQL 的日志&#xff0c;应该会发现 Undo-log 并不存在单独的日志文件&#xff0c;也就是磁盘中并不会存在 xx-undo.log 这类的文件&#xff0c;那 Undo-lo…

12个python超强学习网站

一、python学习网站 1 CSDN 地址&#xff1a; CSDN学院 特点&#xff1a;从免费视频到入门项目&#xff0c;从入门到进阶&#xff0c;学习视频应有尽有&#xff0c;还有Python学习社区&#xff0c;良好的学习和沟通氛围&#xff01; 2 Python123 地址&#xff1a;python123…

ReentrantLock源码分析

ReentrantLock源码分析 源码思想加锁&#xff1a; (1)使用构造方法设置该锁为公平锁FairSync或非公平锁NonfairSync;(本处选定非公平锁) (2)调用lock方法进行获取锁,第一次(getState() 0)在NonfairSync中使用CAS(compareAndSwapInt)直接获取(此处默认未获取成功),第一次获取失…

docker--快速启动功能性Hadoop集群进行功能验证

工作时&#xff0c;有时需要快速启动功能性Hadoop集群来测试一些hadoop相关的项目及功能。 本文讲解如何基于docker&#xff0c;快速搭建一个功能性Hadoop集群&#xff0c;来测试验证一些功能。 使用的docker镜像 使用的docker镜像的源码地址是&#xff1a;hadoop-hive-3.1.x…

挑战杯刷题

字符串相关 字符串相关&#xff1a; 插入元素&#xff1a; str.insert(pos,num,string);//pos是待查入的位置&#xff0c;num是插入几次&#xff0c;string是待插入的字符串 str.insert(pos,string);//与上面insert一样&#xff0c;不过只在pos位置插入string一次查找指定字符串…

[附源码]Node.js计算机毕业设计高校宿舍管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…