HDU 5373 The shortest problem(模拟)——2015 Multi-University Training Contest 7

原创 2016年08月29日 15:24:20

传送门

The shortest problem

Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2223    Accepted Submission(s): 902


Problem Description
In this problem, we should solve an interesting game. At first, we have an integer n, then we begin to make some funny change. We sum up every digit of the n, then insert it to the tail of the number n, then let the new number be the interesting number n. repeat it for t times. When n=123 and t=3 then we can get 123->1236->123612->12361215.
 

Input
Multiple input.
We have two integer n (0<=n<=104 ) , t(0<=t<=105) in each row.
When n==-1 and t==-1 mean the end of input.
 

Output
For each input , if the final number are divisible by 11, output “Yes”, else output ”No”. without quote.
 

Sample Input
35 2
35 1
-1 -1

题目大意:

给你一个数 n(n104),然后你可以每次求得这个数 n 的每一位数的和,算出来加在

n 的后面组成一个新的数,操作 t(t105) 次,问 t 次之后的结果是不是能够被 11

整除。

解题思路:

就是按照题意进行模拟,然后需要知道的是被 11 整除有一个特点:所有的奇数位上的

和与所有偶数位上和的差能够被 11 整除,根据这个特点就可以做了,每次用一个数

组,保存每一位的值,进行判断就行了。

My Code

/**
2016 - 08 - 29 下午
Author: ITAK

Motto:

今日的我要超越昨日的我,明日的我要胜过今日的我,
以创作出更好的代码为目标,不断地超越自己。
**/

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const int INF = 1e9+5;
const int MAXN = 1e6+5;
const int MOD = 1e9+7;
const double eps = 1e-7;
const double PI = acos(-1);
using namespace std;
LL Scan_LL()///输入外挂
{
    LL res=0,ch,flag=0;
    if((ch=getchar())=='-')
        flag=1;
    else if(ch>='0'&&ch<='9')
        res=ch-'0';
    while((ch=getchar())>='0'&&ch<='9')
        res=res*10+ch-'0';
    return flag?-res:res;
}
int Scan_Int()///输入外挂
{
    int res=0,ch,flag=0;
    if((ch=getchar())=='-')
        flag=1;
    else if(ch>='0'&&ch<='9')
        res=ch-'0';
    while((ch=getchar())>='0'&&ch<='9')
        res=res*10+ch-'0';
    return flag?-res:res;
}
void Out(LL a)///输出外挂
{
    if(a>9)
        Out(a/10);
    putchar(a%10+'0');
}
int a[MAXN];
int main()
{
    int t, cas = 1, n;
    while(cin>>n>>t)
    {
        if(n==-1 && t==-1)
            break;
        int tmp = n, cnt = 1, sum = 0;
        memset(a, 0, sizeof(a));
        while(tmp)
        {
            a[cnt++] = tmp%10;
            sum += (tmp%10);
            tmp /= 10;
        }
        for(int i=1; i<=cnt/2; i++)
            swap(a[i], a[cnt-i]);
        int sum1 = 0, sum2 = 0, tp;
        for(int i=1; i<cnt; i++)
        {
            if(i & 1)
                sum1 += a[i];
            else
                sum2 += a[i];
        }
        ///cout<<"sum1 = "<<sum1<<endl<<"sum2 = "<<sum2<<endl;
        while(t--)
        {
            tmp = sum, tp = cnt;
            ///cout<<"sum = "<<sum<<endl;
            while(tmp)
            {
                a[cnt++] = tmp%10;
                sum += (tmp%10);
                tmp /= 10;
            }
            for(int i=tp; i<=(cnt-1+tp)/2; i++)
                swap(a[i], a[cnt-i+tp-1]);
            /**for(int i=1; i<cnt; i++)
                cout<<"a[i] = "<<a[i]<<endl;
            cout<<"+++++++++++++++++++++++"<<endl;*/
            for(int i=tp; i<cnt; i++)
            {
                if(i & 1)
                    sum1 += a[i];
                else
                    sum2 += a[i];
            }
        }
        ///cout<<"sum1 = "<<sum1<<endl<<"sum2 = "<<sum2<<endl;
        if(abs(sum1-sum2) % 11 == 0)
            printf("Case #%d: Yes\n",cas++);
        else
            printf("Case #%d: No\n",cas++);
    }
    return 0;
}
版权声明:编写不易,转载请注明出处,谢谢。 举报

相关文章推荐

HDU 5373 The shortest problem(模拟)——2015 Multi-University Training Contest 7

传送门The shortest problemTime Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O...

hdu 5373 The shortest problem (模拟)

题目链接 Problem Description In this problem, we should solve an interesting game. At first, we have an...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

2015 Multi-University Training Contest 7

2015 Multi-University Training Contest 7 HDU 5371 HDU 5373 HDU 5375

hdu 5328 Problem Killer 2015 Multi-University Training Contest 4

直接计算相邻两数的差和商即可,我开始还思忖这a[i]=0怎么处理商,后来发现a[i]>=1。在统计连续的相同的差和商的同时和ans比较并保存即可。我多此一举存在了vector里,不过影响不大,TLE了...

2015 Multi-University Training Contest 9_1007(模拟)

题意:给你一个n*m的矩阵,每个点都有其对应的值,从(1,1)开始走到(n,m)所能得到的值总和最大是多少?(一个点只能走一次)

HDU 5373 The shortest problem (简单模拟)

The shortest problem Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot...

2015 Multi-University Training Contest 1 Annoying problem

2015多校第一场1009 题目意思是有一颗带边权的树,现在有个集合S,初始为空,有2种操作,把某个点加入S或者在S中删除,每次操作完后,都要你输出当前S集合中所有点相连的最小路径和。 设加入的点...

2015 Multi-University Training Contest 3

1002.RGCDQ 题意:F[x]为x的质因子数,给出一个区间,求该区间内的MAXgcd(F[i],F[j]) 预处理出素数的同时,处理出F[x] 再dp[i][j],处理出到i之前的(包括i...

2015 Multi-University Training Contest 4

【比赛链接】:click here~~ hdu 5328 : Problem Killer 【题意】:给一个数列,求最长的连续元素等差或等比数列的长度 【思路】:直接模拟即可: 代码: #pragma...

2015 Multi-University Training Contest 6

1011 Key Set Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)