码迷,mamicode.com
首页 > 其他好文 > 详细

VJ 1490 小菜的数码验证

时间:2015-05-24 17:00:37      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:

描述

小菜最近在学数的数字数字特征,因此他打算编程来研究一下这个问题.
他的问题很简单,输入一个数N(1000<N<10^31),判断是否能分别被2、3、4、8整除,同时判断它是否有可能(注意只是有可能)
是完全平方数,依次输出1和0来表示能或不能.

格式

输入格式

一个自然数N(1000<N<10^31)

输出格式

5个数,1或者0分别表示能和不能

样例1

样例输入1[复制]

10000000000000000000000000000000000000000000000000000000000000000000000000000

样例输出1[复制]

1
0
1
1
1

限制

各个测试点1s

 

题解:

能被2整除的数末尾:0, 2, 4, 6, 8 —— 结尾数字都被2整除

能被3整除的数:各个位数上的数字和能被3整除

能被4整除的数:后两位能被4整除

能被8整除的数:后三位能被8整除

判断一个数是否为完全平方数:完全平方数的末尾一位只可能是 —— 0, 1, 4, 5, 6, 9.

CODE:

有点丑。。

#include <iostream>
#include <cstdio>
#include <cstring>
#define REP(i, s, n) for(int i = s; i <= n; i ++)
#define REP_(i, s, n) for(int i = n; i >= s; i --)
#define MAX_N 50

using namespace std;

char s[MAX_N];

int main(){
    scanf("%s", s + 1);
    int l = strlen(s + 1);
    if((int)(s[l] - 0) % 2 == 0) printf("1\n"); else printf("0\n");
    int sum = 0;
    REP(i, 1, l) sum += (int)s[i] - 0;
    if(sum % 3 == 0) printf("1\n"); else printf("0\n");
    if(((int)(s[l - 1] - 0) * 10 + (int)(s[l] - 0)) % 4 == 0) printf("1\n");
    else printf("0\n");
    if(((int)(s[l - 2] - 0) * 100 + (int)(s[l - 1] - 0) * 10 + (int)(s[l] - 0)) % 8 == 0) printf("1\n");
    else printf("0\n");
    if(s[l] == 0 || s[l] == 1 || s[l] == 4 || s[l] == 5 || s[l] == 6 || s[l] == 9) printf("1\n");
    else printf("0\n");
    return 0;
}    

 

 

VJ 1490 小菜的数码验证

标签:

原文地址:http://www.cnblogs.com/ALXPCUN/p/4525914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!