首页 > 其他分享 >L2-029 特立独行的幸福

L2-029 特立独行的幸福

时间:2024-03-19 20:26:06浏览次数:34  
标签:幸福 int 特立独行 st L2 ans visited 029

看其他大佬的。
10,13这些是幸福数,在开始会设置为特立独行的幸福数,但是他们并不是特立独行而是其他数字变换而来的,所以在设置那个数字的时候10,13会被修正为普通的幸福数。

#include <bits/stdc++.h>
using namespace std;
int visited[10010];//记录那些是幸福数
int record[10010];//记录独立性
int getbs(int x) {
	int res = 0;
	while (x) {//x不是0
		int left = x % 10;
		x /= 10;
		res += left * left;
	}
	return res;
}
bool isPrime(int x) {
	if (x == 1) return false;
	for (int i = 2; i <= sqrt(x); i++) {
		if (x % i == 0) return false;
	}
	return true;
}
int main() {
	int a, b;
	cin >> a >> b;
	for (int i = a; i <= b; i++) {
		set<int> st;//容器经过的数字
		int j = i;
		if (visited[j] == -1) continue;
		while (true) {
			int ans = getbs(j);//过程数
			//如果是幸福数
			if (ans == 1) {
				visited[i] = 1;//说明容器里面都是特立独行的幸福数
				for (set<int>::iterator it = st.begin(); it != st.end(); ++it) {
					visited[*it] = -1;//都是幸福数
					record[*it] = 0;
				}
				record[i] = st.size() + 1;
				break;
			}
			if (st.find(ans)!=st.end()) {//如果循环
				//不用特意设置visited了按照默认的0就行了
				break;
			}
			st.insert(ans);
			j = ans;
		}
	}
	//遍历特立独行
	int flag = 1;
	for (int i = a; i <= b; i++) {
		if (visited[i] == 1) {
			flag = 0;
			if (isPrime(i)) {
				printf("%d %d\n", i, record[i]*2);
			}
			else {
				printf("%d %d\n", i, record[i]);
			}
		}
	}
	if (flag) cout << "SAD" << '\n';
	return 0;
}

标签:幸福,int,特立独行,st,L2,ans,visited,029
From: https://www.cnblogs.com/chengyiyuki/p/18083853

相关文章

  • L2-028 秀恩爱分得快
    测试点会出现-0这种,直接导致无法使用int类型接收编号,因为无从判断性别,因此只能用string类型。并且需要使用sex来记录当前是男性还是女性,只有对方是异性的时候,亲密度才有意义。#include<bits/stdc++.h>usingnamespacestd;intp[1010][510],k[1010],sex[1010];doublereco......
  • L2-026 小字辈
    第一眼想到的是BFS,然后就用BFS,个人感觉还是有一丢丢麻烦。#define_CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>usingnamespacestd;#definelllonglongvector<vector<int>>vec;intmain(){ intn; cin>>n; vec.resize(n+10); introot=0; for(in......
  • L2-025 分而治之
    如果一个城市未被炸毁,那如果他可达的其他城市也未被炸毁,说明方案不可行。#define_CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>usingnamespacestd;#definelllonglongvector<vector<int>>vec;//邻接表intmain(){ intn,m; cin>>n>>m; vec.resize(n+10......
  • L2-024 部落
    注意merge的时候如果p1和p2相等及时返回否则死循环了,代码有问题而不是算法超时。#define_CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>usingnamespacestd;#definelllonglongintparent[10010],deep[10010];intgetf(intx){ inty=x; while(parent[y]!=-......
  • L2-023 图着色问题
    老太太钻被窝,给爷整笑了。测试点2:颜色只能是k种,大于小于都过不去。#include<bits/stdc++.h>usingnamespacestd;intedges[503][503];intcolor[503];intmain(){ intv,e,k; cin>>v>>e>>k; for(inti=0;i<e;i++){ inta,b; cin>>a......
  • L2-022 重排链表
    这道题真的烦,输出想半天。反正就是要区分奇偶,才能知道那个结点最后要打印出-1.我看网上遇到的都是测试点3的问题,不过我有问题的是测试点1,前三个出问题就是节点数奇偶的问题。#include<bits/stdc++.h>usingnamespacestd;map<int,pair<int,int>>mp;intmain(){ ints......
  • WSL2 配置 tensorflow 环境
    Windows系统中更新NVIDA驱动这里可以直接通过GeforceExperience直接更新更新完成后可以在命令行/wsl中输入nvidia-smi可以看到输出这里的CUDAVersion指的是该驱动版本最高可支持的CUDA版本安装CUDA到NVIDIA官网下载符合条件的CUDA这里我一开始直接选择安装了最新版......
  • PTA L2-014 列车调度
    火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺......
  • PTA L2-013 红色警报
    战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出......
  • 牛客网Mysql相应试题 SQL28 计算用户8月每天的练题数量
    SQL28计算用户8月每天的练题数量描述题目:现在运营想要计算出2021年8月每天用户练习题目的数量,请取出相应数据。示例:question_practice_detailiddevice_idquestion_idresultdate12138111wrong2021-05-0323214112wrong2021-05-0933214113wrong2......