zoukankan      html  css  js  c++  java
  • 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)(热身赛) A-2020

    2020 is a special integer, it's formed of two same integers (20 and 20).

    We call a number is a good number, if and only if it can be formed of two same integers(without leading zero).

    For example: 2020 11, 19991999 are good numbers, but 303, 1122, 1221 are not.

    Now you need to count the number of good numbers in ([1,N])
    在这里插入图片描述

    在这里插入图片描述

    题意

    给出一个 <=1e18 的n 求从1到n中有多少个数是由两个相同的数构成的。

    思路

    输入字符串写出打表程序,发现
    奇数时答案为s.size()/2 个9
    偶数时把字符串分成两半,如果后面的数大于等于前面的,就输出前面的数,否则把字符串转换为数减一后输出。

    代码

    打表代码

    #include <bits/stdc++.h>
    using namespace std;
    
    bool ok(string s)
    {
    	int len = s.size();
    	if(len & 1) return false;
    	string now1 = "" , now2 = "";
    	for(int i=0;i<len/2;i++)
    	now1 += s[i];
    	for(int i=len/2;i<len;i++)
    	now2 += s[i];
    //	cout<<now1<<" "<<now2<<endl;
    	return now1 == now2;
    }
    int main()
    {
    	//ok("1111");
    	int ans = 0;
    	for(int i=1;i<=10000;i++)
    	{
    		stringstream ss;
    		string s;
    		ss<<i;
    		ss>>s;
    		if(ok(s)) ans++;
    		cout<<i<<" "<<ans<<endl;
    	}
    }
    

    AC代码

    #include <bits/stdc++.h>
    using namespace std;
    
    bool ok(string s)
    {
    	int len = s.size();
    	if(len & 1) return false;
    	string now1 = "" , now2 = "";
    	for(int i=0;i<len/2;i++)
    	now1 += s[i];
    	for(int i=len/2;i<len;i++)
    	now2 += s[i];
    //	cout<<now1<<" "<<now2<<endl;
    	return now1 == now2;
    }
    int main()
    {
    	string s;
    	cin>>s;
    	int len = s.size();
    	if(len & 1)
    	{
    		int l = len/2;
    		for(int i=0;i<l;i++) cout<<"9";
    	}
    	else
    	{
    		string now1 = "" , now2 = "";
    		for(int i=0;i<len/2;i++)
    		now1 += s[i];
    		for(int i=len/2;i<len;i++)
    		now2 += s[i];
    		if(now2>=now1) cout<<now1<<"
    ";
    		else
    		{	
    			stringstream ss;
    			ss<<now1;
    			int n;
    			ss>>n;
    			n--;
    			cout<<n<<"
    ";
    		}
    	}
    } 
    
    /*
    
    1000000
    999
    
    10000
    99
    
    100
    9
    
    
    */
    
  • 相关阅读:
    盛最多水的容器
    除自身以外数组的乘积
    组合总和
    旋转图像
    找到所有数组中消失的数字
    RSA加密、签名机制
    SpringBoot-从新建一个项目看起
    linux下vi命令修改文件及保存的使用方法
    集合
    第一个注解式的SpringMVC项目
  • 原文地址:https://www.cnblogs.com/liangyj/p/14195190.html
Copyright © 2011-2022 走看看