首页 > 其他 > 详细

QFNU 10-30 training

时间:2020-11-08 22:32:51      阅读:28      评论:0      收藏:0      [点我收藏+]

7-9 特立独行的幸福

题意:见PTA

思路:其实就是遍历进行查找,利用递归函数,为了解决是特立独行,还要用一个全局数组进行存储所有满足条件的数进行去重标记,最后在输出的时候进行判断是否是只读取过一次

注意:数组一定开的大于1e5,而且这个特立独行与这个数是不是自身的加和是某个数的平方无关

代码:

技术分享图片
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<cstring>
 6 using namespace std;
 7 int n[100005]={0};
 8 int sum=0;
 9 int nn[100005]={0};
10 int maxx=0;
11 int judge(int num){
12     if(num>maxx){
13         maxx=num;
14     }
15     if(n[num]==1){
16         return -1;
17     }else{
18         sum++;
19         n[num]++;
20         nn[num]++;
21         if(num==1||num==10||num==100||num==1000||num==10000){
22             return sum;
23         }else{
24             if(num/10==0){
25                 return judge(num*num);
26             }else if(num/100==0){
27                 return judge((num/10)*(num/10)+(num%10)*(num%10));
28             }else if(num/1000==0){
29                 return judge((num/100)*(num/100)+(num%10)*(num%10)+(num/10%10)*(num/10%10));
30             }else{
31                 return judge((num/1000)*(num/1000)+((num%1000)/100)*((num%1000)/100)+((num%1000)%10)*((num%1000)%10)+((num%1000)/10%10)*((num%1000)/10%10));
32             }
33         }
34 
35     }
36 }
37 int s(int num){//判断素数
38     for(int i=2;i<=sqrt(num);i++){
39         if(num%i==0){
40             return 0;
41         }
42     }
43     return 1;
44 }
45 
46 int main(){
47     int a,bb;
48     scanf("%d %d",&a,&bb);
49     int flag=0;
50     int b[10010][2]={0};
51     int js=0;
52     for(int i=a;i<=bb;i++){
53         sum=0;
54         for(int j=0;j<=maxx;j++){
55             n[j]=0;
56         }
57         int jj=judge(i);
58         if(jj!=-1){
59             b[js][0]=i;
60             b[js][1]=jj;
61             js++;
62         }
63     }
64     for(int i=0;i<js;i++){
65         if(nn[b[i][0]]==1){
66             flag++;
67             if(s(b[i][0])==1){
68                 printf("%d %d\n",b[i][0],b[i][1]*2);
69             }else{
70                 printf("%d %d\n",b[i][0],b[i][1]);
71             }
72         }
73     }
74     if(flag==0){
75         printf("SAD\n");
76     }
77 
78 }
View Code

 7-12 功夫传人

题意:见PTA

思路:就是用结构体存入,将突变的进行存入进去

注意:1.一开始全部使用结构体存入之后结构体数组会溢出

代码:

技术分享图片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<map>
 7 #include<set>
 8 #include<queue>
 9 using namespace std;
10 const int maxx=1e4+10;
11 typedef long long ll;
12 typedef unsigned long long ull;
13 struct A{
14     int bf;
15     double gl;
16 }g[100010];
17 struct B{
18     int bh;
19     int gs;
20     int a[10000];
21 }p[500];
22 int main(){
23     double n,m,t,z,r;
24     int x,y;
25     for(int i=0;i<100001;i++){
26         g[i].bf=0;
27         g[i].gl=0;
28     }
29     cin>>n>>z>>r;
30     g[0].bf=1;
31     g[0].gl=z;
32     double ans=0;
33     r=(1-r/100);
34     int index=0;
35     for(int i=0;i<n;i++){
36         cin>>x;
37         if(g[i].bf!=0){
38             if(x==0){
39                 cin>>y;
40                 ans+=(g[i].gl*y);
41             }
42             else{
43                 for(int j=0;j<x;j++){
44                     cin>>y;
45                     g[y].bf=g[i].bf+1;
46                     g[y].gl=g[i].gl*r;
47                 }
48             }
49         }
50         else{
51             p[index].bh=i;
52             p[index].gs=x;
53             if(x==0){
54                 cin>>p[index].a[0];
55             }
56             else{
57                 for(int j=0;j<x;j++){
58                     cin>>p[index].a[j];
59                 }
60             }
61             index++;
62         }
63     }
64     for(int i=0;i<index;i++){
65         if(p[i].gs==0){
66                 ans+=(g[p[i].bh].gl*p[i].a[0]);
67             }
68             else{
69                 for(int j=0;j<p[i].gs;j++){
70                     g[p[i].a[j]].bf=g[p[i].bh].bf+1;
71                     g[p[i].a[j]].gl=g[p[i].bh].gl*r;
72                 }
73             }
74     }
75     printf("%d",(int)ans);
76     return 0;
77 }
View Code

 

QFNU 10-30 training

原文:https://www.cnblogs.com/bonel/p/13945870.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!