{
T[i]=A[q]; //从左半数组复制到临时空间,比较后大的赋给虚拟空间
cnt=m-p;
}
}
for(i=x;i<y;i)
A[i]=T[i]; //从辅助空间复制回A数组
}
}
int main()
{
intn;
while(cin>>n&&n!=0)
{
cnt=0;
for(int i=0;i<n;i)
cin>>a[i];
merge_sort(a,0,n);
cout<<cnt<<endl;
}
return0;
}
例如phi(1)=1,phi(2)=1,phi(3)=2,phi(4)=2,phi(5)=4,phi(6)=2等等。
unsigned euler(unsigned x)
{ //就是公式
unsignedi, res=x;
for(i = 2; i < (int)sqrt(x * 1.0) 1; i)
if(x%i==0){
res= res / i * (i - 1);
while(x % i == 0) x /= i; // 保证i一定是素数
}
if(x > 1) res = res / x * (x - 1);
returnres;
}
可以通过数学运算,确定某个变量的范围
有n个物体,第i个物体的重量为wi,价为vi。在总重量不超过C的情况下让总价尽量高。每个物体都可以之取走一部分,价和重量按比例计算。
思路:应该综合考虑两个因素。贪心的策略是,优先拿“价除以重量的”最大的,直到重量和正好为C判断是否是素数
int prime(int a)
{
int i;
for(i=2;i<sqrt(a);i)
if(a%i==0)
return 0;
if(i>sqrt(a))
return 1;
注意:调用时用if(prime(a[i])==1)
#include<iostream>
using namespace std;
int main()
{
int n,n2;
cin>>n;
n2=n;
cout<<n<<"=";
for(int i=2;i<=n;i)
{
for(;n2%i==0;)
{
n2=n2/i;
cout<<i<<"*";
}
}
cout<<"1";
return 0;
}
举例:以e为标准,从小到大排序(整个结构体都以e为标准排序好了)
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct{int s,e;}Time;
bool cmp(Time a,Time b)
{
return a.e<b.e;
}
int main()
{
Time t[10005];
for(int i=0;i<5;i)
cin>>t[i].s>>t[i].e;
sort(t,t5,cmp);
for(int i=0;i<5;i)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-34960-4.html
抛出这个观点
日俄战争日本伤亡比俄军多几万人
越来越优秀