• ACM Steps_Chapter Two_Section1


    最小公倍数

    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    int gcd(int a,int b)
    {
    	int r;
    	if(a<b)
    		swap(a,b);
    	r=a%b;
    	while(r)
    	{
    		a=b;
    		b=r;
    		r=a%b;
    	}
    	return b;
    }
    		
    int lcm(int a,int b)
    {
    	return a*b/gcd(a,b);
    }
    int main()
    {
    	int a,b;
    	while(cin>>a>>b)
    		cout<<lcm(a,b)<<endl;
    	system("pause");
    	return 0;
    }
    

    How many prime numbers

    #include<iostream>
    #include<cmath>
    using namespace std;
    bool isprime(int n)
    {
    	for(int i=2;i<=sqrt(n*1.0);i++)
    	{
    		if(n%i==0)
    			return false;
    	}
    	return true;
    }
    int main()
    {
    	int n,sum=0,temp;
    	while(cin>>n)
    	{
    		while(n--)
    		{
    			cin>>temp;
    			if(isprime(temp))
    				sum++;
    		}
    		cout<<sum<<endl;
    		sum=0;
    	}
    	system("pause");
    	return 0;
    }		
    

    Largest prime factor

    #include<stdio.h>
    #include<string.h>
    int biao[1000001];
    void fun()
    {
    	int i,j,k=1;
     	memset(biao,0,sizeof(biao));
     	for(i=2;i<1000000;i++)
     	{
      		if(biao[i]==0)
         	{
         		for(j=1;i*j<999999;j++)
            		biao[i*j]=k;
            	k++;
         	}
     	}
     	biao[1]=0;
    }
    int main()
    {
    	int n;
     	fun();
     	while(scanf("%d",&n)!=EOF)
     	{
      		printf("%d\n",biao[n]);
     	}
     	return 0;
    }
    

    又见GCD

    #include<iostream>
    using namespace std;
    int gcd(int a,int b)
    {
    	return b==0?a:gcd(b,a%b);
    }
    
    int main()
    {
    	int n;
    	int a,b;
    	cin>>n;
    	while(n--)
    	{
    		cin>>a>>b;
    		for(int i=2; ;i++)
    		{
    			if(gcd(a,b*i)==b)
    			{
    				cout<<b*i<<endl;
    				break;
    			}
    		}
    	}
    	system("pause");
    	return 0;
    }
    

    找新朋友

    #include<iostream>
    #include<cmath>
    #include<cstring>
    using namespace std;
    int main()
    {
    	char a[32770];
    	int t,i,j,count,n;
    	cin>>t;
    	while(t--)
    	{
    		cin>>n;
    		count=0;
    		memset(a,0,sizeof(a));
    		for(i=2;i<=n;i++)
    		{
    			if(n%i==0)
    			for(j=i;j<=n;j+=i)
    				a[j]=1;
    		}
    		for(i=1;i<=n;i++)
    		{
    			if(a[i]==0)count++;
    		}
    		cout<<count<<endl;
    	}
    	system("pause");
        return 0;
    }
    

    整数对

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    using namespace std;
    int ans[100];
    
    int main()
    {
    	int n, a, b, c; //a右,c左
    	while(scanf("%d", &n) != EOF && n)
    	{
    		int count = 0;
    		for(int k = 1; k <= n; k *= 10)
    		{
    			c = (n / k) / 11;
    			b = (n / k) % 11;
    			if( (b + c) != 0 && b < 10) //不进位
    			{
    				a = (n - b * k - 11 * c * k) / 2;
    				if(n == 2 * a + b * k + 11 * c * k)
    					ans[count++] = a + b * k + c * 10 * k;
    			}
    			b--;
    			if( (b + c) != 0 && b >= 0) //仅为后
    			{
    				a = (n - b * k - 11 * c * k) / 2;
    				if(n == 2 * a + b * k + 11 * c * k)
    					ans[count++] = a + b * k + c * 10 * k;
    			}
    		}
    		if(count == 0)
    			printf("No solution.\n");
    		else
    		{
    			sort(ans, ans + count);
    			printf("%d", ans[0]);
    			for(int i = 1; i < count; ++i)
    				if(ans[i] != ans[i - 1]) //去重操作
    					printf(" %d", ans[i]);
    			printf("\n");
    		}
    	}
    	return 0;
    }
    

    The area

    /*
    题意:求定积分
        知道三个点了 就可以求出直线和抛物线的方程 
    用抛物线的顶点公式y=a(x-x1)^2+y1外加另一个点x2算出a,再求出直线方程,之后求定积分
    */
    #include<iostream>
    #include<cmath>
    using namespace std;
    int main()
    {
        int t;
        double x1,y1,x0,y0,x2,y2,a,b,c,ans;
        cin>>t;
        while(t--)
        {
            cin>>x0>>y0>>x1>>y1>>x2>>y2;
            a=(y1-y0)/((x1-x0)*(x1-x0));
            b=-2*a*x0;
            c=y0+a*x0*x0;
            ans=1.0/3*a*x2*x2*x2+1.0/2*b*x2*x2+c*x2 - (1.0/3*a*x1*x1*x1+1.0/2*b*x1*x1+c*x1) - (y2+y1)*(x2-x1)/2;
            printf("%.2lf\n",ans);
        }
        system("pause");
        return 0;
    }
    

    Leftmost Digit

    #include <iostream>
    #include<cmath>
    using namespace std;
    
    int main(){
        int t,n;
        double a,b;
        scanf("%d",&t);
        while(t--){
           scanf("%d",&n);
           b=n*log10(n*1.0) - (__int64)(n*log10(n*1.0));
           a=pow(10.0,b);
           printf("%d\n",int(a));
        }
        return 0;
    }
    




  • 相关阅读:
    JS iframe给父类传值
    JS table分页
    JS 日历
    C# 创建文件夹
    post数据html数据获取危险处理办法
    SQL日期数据格式的处理
    sqlserver中计算结果保留小数
    页面元素的定位:getBoundingClientRect()和document.documentElement.scrollTop
    正则表达式 匹配中文,英文字母和数字及_的写法!同时控制长度
    GridPanel分页条插件
  • 原文地址:https://www.cnblogs.com/oldoldb/p/3311325.html
Copyright © 2020-2023  润新知