• 杂记


    https://acm.ecnu.edu.cn/contest/231/?tdsourcetag=s_pctim_aiomsg

    A. 纸条(模拟)
    E 木木给女朋友的项链(数学)
    鸽巢定理。判断最大数和剩余数之和的关系,若前者小于等于后者加一,则可以,否则不可以。不要随便用数组,万一范围太大,很容易溢出。
    代码:
    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <algorithm>
    typedef long long ll;
    using namespace std;
    int main()
    {
    	ll n;
    	ll num,sum;
    	ll max;
    	int t;
        scanf("%d",&t);
        while(t--)
        {
        	sum=0,max=-1;
        	scanf("%lld",&n);
        	for(int i=0;i<n;i++) 
        	{
        		scanf("%lld",&num);
        		sum+=num;
        		if(num>max) max=num;
    		}
    		if(max<=sum-max+1) puts("Yes");
    	    else puts("No");
    	}
    	return 0;
    }
    C 凶案现场
    strstr函数
    语法:
    str1: 被查找目标 
    str2: 要查找对象 
    返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。
    例子:
    char str[]="1234xyz";
    char *str1=strstr(str,"34");
    cout << str1 << endl;
     
    显示的是: 34xyz
    代码:
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <string>
    const int MAXN=100010;
    using namespace std;
    int main()
    {
    	int t;
    	char ch1[MAXN],ch2[MAXN];
    	scanf("%d",&t);
    	while(t--)
    	{
    	   cin>>ch1;
    	   cin>>ch2;
    	   if(strstr(ch2,ch1)) printf("YES
    ");
    	   else printf("NO
    ");
        }
    	return 0;
    }
    四、PTA
    7-37 整数分解为若干项之和
     
    7-36 复数四则运算 (15 分)
    这题AC了,但是有大量冗余代码,我的思路很简单,首先依据复数的运算法则:
    加法减法好做,就是乘法和除法:
    (a+bi)*(c+di)=(ac-bd)+(bc+ad)i;
      (a+bi)/(c+di)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d)i;
    知道了这个后,我先设了value1到value8变量,分别存放运算后的实数复数值,大体思路知道,但是由于无法确定b和d的正负以及计算出来的复数项值的正负,然后我就用if语句一个一个的判断。。。还有就是题目规定如果value值为零就不能输出,这个我开始就直接判断是否为0,但是根本判断不出来,因为value值是double类型,所以我用了跟0.0比较以及用-0.05到+0.05范围比较,如果value>=-0.05&&value<=0.05,则由于四舍五入得0,就这样判断是否为0,然后又一个一个的判断。。。所以160多行冗余代码。。。
    #include <cstdio>
    int main()
    {
    	double a,b,c,d;
    	double value1,value2,value3,value4,value5,value6,value7,value8;
    	scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
    	value1=a+c,value2=b+d;
    	value3=a-c,value4=b-d;
    	value5=a*c-b*d,value6=b*c+a*d;
    	value7=(a*c+b*d)/(c*c+d*d);
    	value8=(b*c-a*d)/(c*c+d*d);
        //求和
    	if((int)(value1)!=0&&(int)(value2)!=0) 
    	{
    	   if((int)(value2)>0) {
    	   if(b>=0&&d>=0) printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value1,value2);
    	   else if(b<0&&d>=0) printf("(%.1f%.1fi) + (%.1f+%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value1,value2);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) + (%.1f%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value1,value2);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) + (%.1f%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value1,value2);
          }
    	   else {
    	   if(b>=0&&d>=0) printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1f%.1fi
    ",a,b,c,d,value1,value2); 
    	   else if(b<0&&d>=0) printf("(%.1f%.1fi) + (%.1f+%.1fi) = %.1f%.1fi
    ",a,b,c,d,value1,value2);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) + (%.1f%.1fi) = %.1f%.1fi
    ",a,b,c,d,value1,value2);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) + (%.1f%.1fi) = %.1f%.1fi
    ",a,b,c,d,value1,value2);
           }
    	}
    	else if((int)(value1)==0&&(int)(value2)!=0) 
    	{
          if(b>=0&&d>=0) printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1fi
    ",a,b,c,d,value2);
          else if(b<0&&d>=0) printf("(%.1f%.1fi) + (%.1f+%.1fi) = %.1fi
    ",a,b,c,d,value2);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) + (%.1f%.1fi) = %.1fi
    ",a,b,c,d,value2);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) + (%.1f%.1fi) = %.1fi
    ",a,b,c,d,value2);
        }
    	else if((int)(value1)!=0&&(int)(value2)==0) 
    	{
    	 if(b>=0&&d>=0) printf("(%.1f+%.1fi) + (%.1f+%.1fi) = %.1f
    ",a,b,c,d,value1);
    	 else if(b<0&&d>=0) printf("(%.1f%.1fi) + (%.1f+%.1fi) = %.1f
    ",a,b,c,d,value1);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) + (%.1f%.1fi) = %.1f
    ",a,b,c,d,value1);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) + (%.1f%.1fi) = %.1f
    ",a,b,c,d,value1);
        }
    	else 
    	{
          if(b>=0&&d>=0) printf("(%.1f+%.1fi) + (%.1f+%.1fi) = 0.0
    ",a,b,c,d);
          else if(b<0&&d>=0) printf("(%.1f%.1fi) + (%.1f+%.1fi) = 0.0
    ",a,b,c,d);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) + (%.1f%.1fi) = 0.0
    ",a,b,c,d);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) + (%.1f%.1fi) = 0.0
    ",a,b,c,d);
        }
    	//求减 
    	if((int)(value3)!=0&&(int)(value4)!=0) 
    	{
    	   if((int)(value4)>0) 
    	   {
    	    if(b>=0&&d>=0) printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value3,value4);
    	    else if(b<0&&d>=0) printf("(%.1f%.1fi) - (%.1f+%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value3,value4);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) - (%.1f%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value3,value4);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) - (%.1f%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value3,value4);
    	   }
    	   else 
    	   {
    	     if(b>=0&&d>=0) printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1f%.1fi
    ",a,b,c,d,value3,value4); 
    	     else if(b<0&&d>=0) printf("(%.1f%.1fi) - (%.1f+%.1fi) = %.1f%.1fi
    ",a,b,c,d,value3,value4);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) - (%.1f%.1fi) = %.1f%.1fi
    ",a,b,c,d,value3,value4);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) - (%.1f%.1fi) = %.1f%.1fi
    ",a,b,c,d,value3,value4);
    	   }
    	}
    	else if((int)(value3)==0&&(int)(value4)!=0) 
    	{
    	 if(b>=0&&d>=0) printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1fi
    ",a,b,c,d,value4);
    	 else if(b<0&&d>=0) printf("(%.1f%.1fi) - (%.1f+%.1fi) = %.1fi
    ",a,b,c,d,value4);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) - (%.1f%.1fi) = %.1fi
    ",a,b,c,d,value4);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) - (%.1f%.1fi) = %.1fi
    ",a,b,c,d,value4);
        }
    	else if((int)(value3)!=0&&(int)(value4)==0) 
    	{
    	  if(b>=0&&d>=0) printf("(%.1f+%.1fi) - (%.1f+%.1fi) = %.1f
    ",a,b,c,d,value3);
    	  else if(b<0&&d>=0) printf("(%.1f%.1fi) - (%.1f+%.1fi) = %.1f
    ",a,b,c,d,value3);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) - (%.1f%.1fi) = %.1f
    ",a,b,c,d,value3);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) - (%.1f%.1fi) = %.1f
    ",a,b,c,d,value3);
        }
    	else 
    	{
    	 if(b>=0&&d>=0) printf("(%.1f+%.1fi) - (%.1f+%.1fi) = 0.0
    ",a,b,c,d);
          else if(b<0&&d>=0) printf("(%.1f%.1fi) - (%.1f+%.1fi) = 0.0
    ",a,b,c,d);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) - (%.1f%.1fi) = 0.0
    ",a,b,c,d);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) - (%.1f%.1fi) = 0.0
    ",a,b,c,d);
        }
    	//求乘 
    	if((int)(value5)!=0&&(int)(value6)!=0) 
    	{
    	   if((int)(value6)>0) 
    	   {
    	     if(b>=0&&d>=0) printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value5,value6);
    	     else if(b<0&&d>=0) printf("(%.1f%.1fi) * (%.1f+%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value5,value6);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) * (%.1f%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value5,value6);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) * (%.1f%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value5,value6);
    	   }
    	   else 
    	   {
    	     if(b>=0&&d>=0) printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1f%.1fi
    ",a,b,c,d,value5,value6); 
    	     else if(b<0&&d>=0) printf("(%.1f%.1fi) * (%.1f+%.1fi) = %.1f%.1fi
    ",a,b,c,d,value5,value6);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) * (%.1f%.1fi) = %.1f%.1fi
    ",a,b,c,d,value5,value6);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) * (%.1f%.1fi) = %.1f%.1fi
    ",a,b,c,d,value5,value6);
    	   }
    	}
    	else if((int)(value5)==0&&(int)(value6)!=0) 
    	{
    	   if(b>=0&&d>=0) printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1fi
    ",a,b,c,d,value6);
    	   else if(b<0&&d>=0) printf("(%.1f%.1fi) * (%.1f+%.1fi) = %.1fi
    ",a,b,c,d,value6);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) * (%.1f%.1fi) = %.1fi
    ",a,b,c,d,value6);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) * (%.1f%.1fi) = %.1fi
    ",a,b,c,d,value6);
        }
    	else if((int)(value5)!=0&&(int)(value6)==0) 
    	{
    	  if(b>=0&&d>=0) printf("(%.1f+%.1fi) * (%.1f+%.1fi) = %.1f
    ",a,b,c,d,value5);
    	  else if(b<0&&d>=0) printf("(%.1f%.1fi) * (%.1f+%.1fi) = %.1f
    ",a,b,c,d,value5);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) * (%.1f%.1fi) = %.1f
    ",a,b,c,d,value5);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) * (%.1f%.1fi) = %.1f
    ",a,b,c,d,value5);
        }
    	else 
    	{
    	  if(b>=0&&d>=0) printf("(%.1f+%.1fi) * (%.1f+%.1fi) = 0.0
    ",a,b,c,d);
          else if(b<0&&d>=0) printf("(%.1f%.1fi) * (%.1f+%.1fi) = 0.0
    ",a,b,c,d);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) * (%.1f%.1fi) = 0.0
    ",a,b,c,d);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) * (%.1f%.1fi) = 0.0
    ",a,b,c,d);
        }
    	//printf("%.1f %.1f
    ",value7,value8);
    	//求除 
    	if((value7< -0.05||value7>0.05)&&(value8< -0.05||value8>0.05)) 
    	{
    	   if((value8)>0.00) 
    	   {
    	     if(b>=0&&d>=0) printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value7,value8);
    	     else if(b<0&&d>=0) printf("(%.1f%.1fi) / (%.1f+%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value7,value8);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) / (%.1f%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value7,value8);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) / (%.1f%.1fi) = %.1f+%.1fi
    ",a,b,c,d,value7,value8);
    	   }
    	   else 
    	   {
    	      if(b>=0&&d>=0) printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1f%.1fi
    ",a,b,c,d,value7,value8); 
    	      else if(b<0&&d>=0) printf("(%.1f%.1fi) / (%.1f+%.1fi) = %.1f%.1fi
    ",a,b,c,d,value7,value8);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) / (%.1f%.1fi) = %.1f%.1fi
    ",a,b,c,d,value7,value8);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) / (%.1f%.1fi) = %.1f%.1fi
    ",a,b,c,d,value7,value8);
    	   }
    	}
    	else if((value7<=0.05&&value7>= -0.05)&&(value8>0.05||value8< -0.05)) 
    	{
    	  if(b>=0&&d>=0) printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1fi
    ",a,b,c,d,value8);
    	  else if(b<0&&d>=0) printf("(%.1f%.1fi) / (%.1f+%.1fi) = %.1fi
    ",a,b,c,d,value8);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) / (%.1f%.1fi) = %.1fi
    ",a,b,c,d,value8);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) / (%.1f%.1fi) = %.1fi
    ",a,b,c,d,value8);
        }
    	else if((value7>0.05||value7< -0.05)&&(value8<=0.05&&value8>= -0.05)) 
    	{
    	  if(b>=0&&d>=0) printf("(%.1f+%.1fi) / (%.1f+%.1fi) = %.1f
    ",a,b,c,d,value7);
    	  else if(b<0&&d>=0) printf("(%.1f%.1fi) / (%.1f+%.1fi) = %.1f
    ",a,b,c,d,value7);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) / (%.1f%.1fi) = %.1f
    ",a,b,c,d,value7);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) / (%.1f%.1fi) = %.1f
    ",a,b,c,d,value7);
        }
    	else 
    	{
    	  if(b>=0&&d>=0) printf("(%.1f+%.1fi) / (%.1f+%.1fi) = 0.0
    ",a,b,c,d);
          else if(b<0&&d>=0) printf("(%.1f%.1fi) / (%.1f+%.1fi) = 0.0
    ",a,b,c,d);
    	   else if(b>=0&&d<0) printf("(%.1f+%.1fi) / (%.1f%.1fi) = 0.0
    ",a,b,c,d);
    	   else if(b<0&&d<0) printf("(%.1f%.1fi) / (%.1f%.1fi) = 0.0
    ",a,b,c,d);
        }
        return 0;
    }

    进制转换https://oj.ismdeep.com/contest/problem?id=1646&pid=1

    金额转换https://oj.ismdeep.com/contest/Problem?id=1646&pid=3

    用栈实现倒序输出一个字符串(可以带空格)

    1.用string和getline获取一行可以带空格的文本

    2.将string转换为 char*

    3.将char*入栈

    4.将栈内元素出栈即可实现倒叙输出

    /*获得一行文本,用栈倒序输出这行文本*/
    #include <iostream>
    #include <stack>//使用标准库里面的栈
    #include <cstring>
    #include <string> 
    using namespace std;
    int main()
    {
        string temp;
        getline(cin,temp);//获取一行可能包含有空格的文本
        int len = temp.size();
        const char *ss = temp.c_str();//将string转换成char*
        stack <char> text;
        int i = 0;
        while(len--) {//入栈
            text.push(ss[i++]);
        } 
        while(!text.empty()){//出栈
            cout << text.top();
            text.pop();
        }
        return 0;
    } 
    

    PTA基础题目集 7-26 单词长度 (15分) 

    https://pintia.cn/problem-sets/14/problems/806

    得了12分,两个断点答案错误,一个是空句子,一个是开头结尾多空格。

    贴一下12分的代码:

    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <iostream>
    using namespace std;
    int main()
    {
    	char chr;
    	int i=0;
    	while((chr=getchar())!='.')
    	{
    		if(chr!=' ') i++;
    		else if(chr==' '){
    			if(i!=0) cout<<i<<" ";
    			i=0;
    		}
    	}
    	cout<<i<<endl;
    	return 0;
     } 
    

      

    天晴了,起飞吧
  • 相关阅读:
    tomact配置
    cesium环境配置
    电脑上压缩文件不显示图标的解决办法
    MSCE C#官网一步步学习搬运9 第九章、用C++/CLI编写Addins
    MSCE | MDL二次开发知识点与遇到的问题记录
    MSCE C++官网一步步学习搬运7
    MSCE C++官网一步步学习搬运6
    geotools模块梳理
    geoserver 安全配置
    mapbox去除logo控件和attribution控件
  • 原文地址:https://www.cnblogs.com/jianqiao123/p/11962777.html
Copyright © 2020-2023  润新知