懒癌患者简易工具系列|C++
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了懒癌患者简易工具系列|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.计算众数、中位数、平均数、方差
内容:普通数据:输入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++的主要内容,如果未能解决你的问题,请参考以下文章