Chinaunix首页 | 论坛 | 博客
  • 博客访问: 342020
  • 博文数量: 122
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1191
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 11:12
文章分类

全部博文(122)

文章存档

2010年(122)

我的朋友

分类: C/C++

2010-03-16 13:40:09

 

资源来源:http://blog.chinaunix.net/u3/105033/index.html

 

一、问题描述

Description

Simulate a locked spinner puzzle. A locked spinner puzzle is a puzzle where you can only change wheels in groups. It is a common puzzle to achieve some value on the spinners by only changing them in the allowed groups. Imagine a row of D numbered wheels, each labeled sequentially with the digits 0 through 9. This is similar to what is on a briefcase combination lock. And the labels are 1000 1200 1002 0111 and 0100. Pressing the button labeled 1000 moves the first wheel once, but leaves the others alone, while pressing the button labeled 1002 moves the first wheel once and the fourth wheel twice, leaving the center wheels unchanged. Your task is to simulate such a locked spinner puzzle giving the final readout of the wheels.

Input

The input to your program will be a line containing D digits (at most 10) representing the starting positions of the wheels. Following this, each line will have the button label for which button is pressed next. There will always be at least 1 digit

Output

Output the final positions of the wheels.

Sample Input

0001

1003

0206

0034

1111

1003

Sample Output

3348

二、分析解答

按位将输入的所有数据加起来,然后对10取模即是结果。

三、代码

 

#include<iostream>
#include<string>
using namespace std;
int main()
{
    int d[10];
    string str;
    int i;
    cin>>str;
    int len=str.size();
    for(i=0;i<len;++i)
    {
        d[i]=str[i]-48;
    }
    while(cin>>str)
    {
        for(i=0;i<len;++i)
        {
            d[i]+=(str[i]-48);
        }
    }
    for(i=0;i<len;++i)
    {
        d[i]%=10;
        cout<<d[i];
    }
    cout<<endl;
    return 0;
}


阅读(1049) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~