首页 > 代码库 > 懒癌患者简易工具系列|C++

懒癌患者简易工具系列|C++

这里是一些小工具,针对的是你自己能够完成但是懒得完成的事的。代码难度都不是很大,其实主要是给自己偷懒用的

大概会持续更新/维护中,有坑欢迎提出,反正我也懒得改。内容随着我的脑洞直径的++、懒惰程度的++和码力的++会不断++。

1.整数开2方

样例输入: 12

样例输出: 2√3

代码:

技术分享
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 using namespace std;
 5 int a[200000];
 6 int main()
 7 {
 8     int n,i=0,now=2,ans=1,w=1;
 9     scanf("%d",&n);
10     while (n!=1) {
11         while (n%now==0) {
12             a[++i]=now;
13             n=n/now;
14         }
15         now++;
16     }
17     int m=i,en;
18     i=1;
19     while (i<=m) {
20         int p=a[i];
21         en=0;
22         while (a[i]==p) {
23             i++;
24             en++;
25         }
26         if (en%2!=0) {
27             for (int j=1; j<=en/2; j++) w=w*p;
28             ans*=p;
29         } else for (int j=1; j<=en/2; j++) w=w*p;
30     }
31     if (ans==1) {
32         cout<<w<<endl;
33     } else {
34         cout<<w<<""<<ans<<endl;
35     }
36     return 0;
37 }
整数开2方

2.计算众数、中位数、平均数、方差

内容:普通数据:输入n,然后输入n个等待统计的数据;加权数据:输入w,再输入w组a,b,表示每组里有a个b。

依次输出:众数、中位数、平均数、方差。

技术分享
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 double ping,fangcha,mid,all=0,pk=0;
 8 int a[20000],bo[200100],zhong[101];
 9 int main()
10 {
11     printf("首先输入1或2,1表示接下来输入的数据是普通数据,2表示输入的数据是加权数据,");
12     printf("加权数据输入方式为先输入w表示有w组,接下来输入w组a b表示每组a个b\n"); 
13     memset(bo,0,sizeof(bo));
14     int n=0,maxn=-1,maxx=-1,t=0,b,w,v=0,l,r;
15     cin>>b;
16     if (b==1) {
17         scanf("%d",&n);
18         for (int i=1; i<=n; i++) {
19             scanf("%d",&a[i]);
20             if (a[i]>maxn) maxn=a[i];
21             all+=a[i];
22             bo[a[i]]++;
23         }
24     } else {
25         scanf("%d",&w);
26         for (int i=1; i<=w; i++) {
27             scanf("%d %d",&l,&r);
28             n+=l;
29             for (int j=1; j<=l; j++) a[++v]=r;
30             if (a[v]>maxn) maxn=a[v];
31             all+=a[v]*l;
32             bo[a[v]]=l;
33         }
34     }
35     
36     for (int i=1; i<=maxn; i++) if (bo[i]>maxx) maxx=bo[i];
37     for (int i=1; i<=maxn; i++) if (bo[i]==maxx) {
38         t++;
39         zhong[t]=i;
40     }
41     sort(a+1,a+n+1);
42     if (n%2!=0) mid=a[(n+1)/2]; else mid=(a[n/2]+a[n/2+1])/2.0;
43     ping=all/n*1.0;
44     for (int i=1; i<=n; i++) pk+=(ping-a[i])*(ping-a[i]);
45     fangcha=pk/n*1.0;
46     printf("众  数为:");
47     if (t!=n) for (int i=1; i<=t; i++)printf("%d ",zhong[i]); else cout<<"没有众数";
48     printf("\n");
49     printf("中位数为:%.2f\n",mid);
50     printf("平均数为:%.2f\n",ping);
51     printf("方  差为:%.2f\n",fangcha);
52     getchar();
53     return 0;
54 }
四个统计计算

一开始差点被自己坑了,已经修改好了。

维修中...

懒癌患者简易工具系列|C++