nylgACM_105_九的余数
生活随笔
收集整理的這篇文章主要介紹了
nylgACM_105_九的余数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目105
九的余數
時間限制:3000 ms | 內存限制:65535 KB
難度:3
描述
現在給你一個自然數n,它的位數小于等于一百萬,現在你要做的就是求出這個數整除九之后的余數。
輸入第一行有一個整數m(1<=m<=8),表示有m組測試數據;
隨后m行每行有一個自然數n。
輸出輸出n整除九之后的余數,每次輸出占一行。樣例輸入3
4
5
465456541
樣例輸出4
5
4
?
解析:?本題給的數據是1000000位,?是數據的位數而不是數據的取值范圍,?事實上是可以猜想這道題是不是對位數或每位數運算的,而事實也證明這個猜想是正確的。
這題的關鍵某個數在于對9取模,??可以轉換成各位數之和對9取模,這樣1000000位的數就轉換成數據范圍1~9000000,就可以很輕松的解決問題了。
#include<stdio.h>int main(){int n,m,i,s;char a[1000000];scanf("%d",&n);while(n--){scanf("%s",a);for(i=s=0;a[i];i++)s+=a[i]-48;printf("%d\n",s%9);}return 0 ;}
這個題我還用了做了一下優化,?畢竟1000000的數組太消耗空間,所以我才用了一種讀一位加一位的方法,這樣時間效率就降低了,空間利用率大大提高。但可惜的是在南陽理工的練習場oj上通不過。所以這里只供大家參考。如果哪位大神知道是什么原因,還請給小弟我解釋一下。跪謝
#include <stdio.h> int main() {int t;scanf("%d", &t);getchar();while(t--){int m=0;char ch;while(scanf("%c",&ch) && ch != '\n'){m += ch-'0';}printf("%d\n", m%9);}return 0; }
總結
以上是生活随笔為你收集整理的nylgACM_105_九的余数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nylgacm_1057_寻找最大数(三
- 下一篇: JeecgBoot 移动OA 新版本出炉