• ZOJ 4070 Function and Function


    这题卡输入输出,不能用 cin 和  cout。

    Function and Function


    Time Limit: 1 Second      Memory Limit: 65536 KB


    If we define , do you know what function means?

    Actually, calculates the total number of enclosed areas produced by each digit in . The following table shows the number of enclosed areas produced by each digit:

    Enclosed Area Digit Enclosed Area Digit
    0 1 5 0
    1 0 6 1
    2 0 7 0
    3 0 8 2
    4 1 9 1

    For example, , and .

    We now define a recursive function by the following equations:

    For example, , and .

    Given two integers and , please calculate the value of .

    Input

    There are multiple test cases. The first line of the input contains an integer (about ), indicating the number of test cases. For each test case:

    The first and only line contains two integers and ( ). Positive integers are given without leading zeros, and zero is given with exactly one '0'.

    Output

    For each test case output one line containing one integer, indicating the value of .

    Sample Input

    6
    123456789 1
    888888888 1
    888888888 2
    888888888 999999999
    98640 12345
    1000000000 0
    

    Sample Output

    5
    18
    2
    0
    0
    1000000000
    

    Hint


    Author: WENG, Caizhi
    Source: The 2018 ACM-ICPC Asia Qingdao Regional Contest
    #include<iostream>
    #include<cstdio>
    using namespace std;
    typedef long long LL;
    
    int main()
    {
    	LL a[] = {1,0,0,0,1,0,1,0,2,1};
    	LL n,m,j,k,i,T;
    	scanf("%lld",&T);
        for (j=0;j<T;j++)
    	{
    		scanf("%lld%lld",&n,&m);
    		if (m==0)
    		{
    			printf("%lld
    ",n);
    			continue;
    		}
    		LL sum=0,x=0,flag = -1;
    		for (i=0;i<m;i++)
    		{
    			if (n == 0)
    			{
    				flag = 0;
    				break;
    			}
    
    			if (n == 1)
    			{
    				flag = 1;
    				break;
    			}
    			sum=0;
    			while (n)
    			{
    				sum = sum + (a[n%10]);
    				n/=10;
    			}
    			n = sum;
    			//cout<<"n = "<<n<<endl;
    		}
    
    		if (flag == 1)
    		{
    			if ( ( (m-1) - i) % 2 == 0 )
    			printf("0
    ");
    			else
    			printf("1
    ");
    		}
    		else if (flag == 0)
    		{
    			if ( ( (m-1) - i) % 2 == 0 )
    			printf("1
    ");
    			else
    			printf("0
    ");
    		}
    		else
    		printf("%lld
    ",sum);
    	}
    
    	return 0;
    }
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    函数模板
    c#使用多线程的几种方式示例详解
    C#中数组、ArrayList和List三者的区别
    c# Thread类
    IEnumerable和IEnumerator 详解
    C#执行CMD命令并接收返回结果的实现方法
    C# Process.Start()方法详解
    C#Json转Xml格式数据的方法
    sql存储过程
    SQL存储过程基础
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451364.html
Copyright © 2020-2023  润新知