简单的C语言问题,求秒杀 简单题目,求秒杀

\u6c42\u6700\u7b80\u5355\u7684C\u8bed\u8a00\u7a0b\u5e8f

#include
main()
{
int a,b,t=0;
scanf("%d %d",&a,&b);
if (a<b)
{
t=a;
a=b;
b=t;
}
printf("%d %d %d %d %d",(a+b),(a-b),(a/b),(a*b),(a%b));
}
C\u8bed\u8a00\u662f\u4e00\u95e8\u901a\u7528\u8ba1\u7b97\u673a\u7f16\u7a0b\u8bed\u8a00\uff0c\u5e94\u7528\u5e7f\u6cdb\u3002C\u8bed\u8a00\u7684\u8bbe\u8ba1\u76ee\u6807\u662f\u63d0\u4f9b\u4e00\u79cd\u80fd\u4ee5\u7b80\u6613\u7684\u65b9\u5f0f\u7f16\u8bd1\u3001\u5904\u7406\u4f4e\u7ea7\u5b58\u50a8\u5668\u3001\u4ea7\u751f\u5c11\u91cf\u7684\u673a\u5668\u7801\u4ee5\u53ca\u4e0d\u9700\u8981\u4efb\u4f55\u8fd0\u884c\u73af\u5883\u652f\u6301\u4fbf\u80fd\u8fd0\u884c\u7684\u7f16\u7a0b\u8bed\u8a00\u3002
\u5c3d\u7ba1C\u8bed\u8a00\u63d0\u4f9b\u4e86\u8bb8\u591a\u4f4e\u7ea7\u5904\u7406\u7684\u529f\u80fd\uff0c\u4f46\u4ecd\u7136\u4fdd\u6301\u7740\u826f\u597d\u8de8\u5e73\u53f0\u7684\u7279\u6027\uff0c\u4ee5\u4e00\u4e2a\u6807\u51c6\u89c4\u683c\u5199\u51fa\u7684C\u8bed\u8a00\u7a0b\u5e8f\u53ef\u5728\u8bb8\u591a\u7535\u8111\u5e73\u53f0\u4e0a\u8fdb\u884c\u7f16\u8bd1\uff0c\u751a\u81f3\u5305\u542b\u4e00\u4e9b\u5d4c\u5165\u5f0f\u5904\u7406\u5668\uff08\u5355\u7247\u673a\u6216\u79f0MCU\uff09\u4ee5\u53ca\u8d85\u7ea7\u7535\u8111\u7b49\u4f5c\u4e1a\u5e73\u53f0\u3002



借用楼主代码,先写个处理余数函数就行。另外设置一个数组用来存储每次输入的数求余后的结果,因为你要最后输出。当然用动态指针申请空间存储也行。
我认为最关键是要每次求和之后也进行求余,这样不至于太大超出int范围。
写完发现和 __angelfish| 说的差不多。只不过他一下子申请超大内存重复操作不太可取。

#include <stdio.h>
#define N 100
/*求余MOD函数,为了避免每位数总和太大超过int范围,每次求和的之后时候求余*/
int MOD(long num)
{
int result=0;
while(num)
{
result+=(num%10);
num/=10;
result%=9; /*每次求和之后求余*/
}
return result;
}
int main()
{
char ch;
int i=0,num;
long x;
int a[N]; /*存储每一个输入数求余之后的结果*/
scanf("%d",&num);
getchar();
while(num--)
{
x=0;
ch=getchar();
while(ch!='\n')
{
x=ch-'0'+x;
ch=getchar();
}
a[i]=MOD(x);
i++;
}
num=i;
for(i=0;i<num;i++)
printf("%d\n",a[i]);
return 0;
}

请确认这个数:“它的位数小于等于一百万”,还是大小小于一百万?
如果是前者,有可能是大数,超了整数表示的范围
具体算法上,下面这段是没用的,直接拿x%9就可以得到结果,因为你前面x等于这个数字的各位数之和,那么这个数整除九之后的余数 就等于 这个数字的各位数之和整除9之后的余数,即x%9
while(x>=10)
{
temp=x;
x=0;
while(temp!=0)
{
x=x+temp%10;
temp=temp/10;
}
}

呃,是我理解错了!确实是各个位上的数相加结果整除9就可以了!
while(x>=10)
{...
}
去掉这个外面的循环就行了吧!直接求%9咯!

全局变量只申请一次

#include <stdio.h>
char bigNumber[1000002];
int main(int argc, char *argv[])
{
// 数据总数
int T=0;
// mod 为除数,remainder 为当前的余数
int mod=9,remainder=0;
int i=0;
scanf("%d",&T);
while(T--)
{
scanf("%s",bigNumber);
for(i=0,remainder=0;bigNumber[i];i++)
{
/* 假设 bigNumber 一共有 N 位数字组成。那么我们要做的就是:
计算 bigNumber[0]...bigNumber[N-1] 除以 mod 的余数。

因为 N 最大的值为 1000000 ,所以不能用常规的除法,我们需要模拟大整数的除法,得到余数。
也即是从最高位 bigNumber[0] 开始除以数字 mod 取余数,直到最后一位 bigNumber[N-1]。

假设已经有数字 remainder 为,为 bigNumber[0]...bigNmber[i-1] 除以 mod 得到的余数。
下面我们来计算数字 bigNumber[0]...bigNmber[i] 除以 mod 的余数。算法为:

1.首先取出 bigNumber[i] 的数值,也就是 (bigNumber[i]-'0');

2.然后加上 bigNumber[0]~bigNmber[i-1] 遗留下来的余数 remainder。
当然不是直接加上 remainder ,因为 remainder 对于 bigNumber[i] 来说,是【高一位】的结果,
所以要乘以一个基数 10 ,也就是加上 remainder*10,得到:
(remainder*10 + (bigNumber[i]-'0')。
这就是当前要被数字 mod 除的数字。

3.更新 remainder 为数字 bigNumber[0]...bigNmber[i] 除以 mod 的余数。
也即是:
remainder = (remainder*10 + (bigNumber[i]-'0')) % mod

4.当 i=0 时,因为 bigNumber[0] 是最高位,因此 remainder = 0;
当 i=N-1,remainder 就是 bigNumber[0]...bigNubmer[N-1] 除以 mod 的余数。

*/
remainder = (remainder*10 + (bigNumber[i]-'0')) % mod;
}
printf("%d\n",remainder);
}
return 0;
}

  • 鏁版嵁缁撴瀯c 璇█鐗堥鐩,姹備唬鐮!!! 璇蜂竴瀹鐢–璇█,姹澶х甯繖
    绛旓細濡傚浘 婧愪唬鐮:/*灏廘灞呬綇鐨勫湴鏂规湁寰堝鍩庡競...浣滆:q839219286绠楁硶鎬濇兂锛氬煄甯傚浘閲囩敤DFS鎼滅储锛屾悳绱㈢粓姝㈡潯浠舵槸锛氬埌杈剧粓鐐规垨 Vmax-Vmin锛瀌V璁 dV=Vmax-Vmin锛屾眰dV鐨勬柟娉曟槸鍒╃敤 Vmax銆乂min鐨勯掑綊鍘嗗彶璁板綍鍥剧粨鏋勯噰鐢ㄢ滈偦鎺ヨ〃鈥濇硶锛屽瓨鍌ㄧ粨鏋勯噰鐢ㄦ暟缁勩*///C璇█鐗#include<stdio.h>#include<stdlib.h>#...
  • 姹傚姪楂樻墜,姹涓涓C璇█缂栧啓浜斿瓙妫嬫父鎴忕殑绋嬪簭澶栧姞娴佺▼鍥,灏ゅ叾鏄祦绋嬪浘璋...
    绛旓細(5)鍋囧涓婅堪鎯呭喌閮芥病鍑虹幇锛岄偅涔堣繖閲屽氨鍙互鍫靛鏂规锛屾垨鑰呰嚜瀹氫箟涓嬫 杩欓噷闈㈤昏緫鏈夌偣涔憋紝鑰屼笖寰堝娌℃湁鑰冭檻锛屾墍浠ヤ綘鏄珮鎵嬬殑璇濆紑鍙戣繖涓郴缁熼偅涔堟湁鍙帺鎬э紝鍋囧浣犺繛浜斿瓙妫嬮兘鏄彍楦熺殑璇濓紝閭d箞寰堝浣犺冭檻涓嶅埌锛岄偅涔堥珮鎵嬪彲浠绉掓潃浣犵殑绯荤粺銆傛敞鎰忕殑鏄紝浜斿瓙妫嬪彉鍖栨瘮杈冨锛岃鐔熺煡妫嬪眬鐨勫緢澶氭儏鍐碉紝鐗瑰埆鏄鐩樺ぇ灏忕殑...
  • 姹傝椤圭浉娑,鍒嗙粍姹傚拰鐨绉掓潃鍏紡
    绛旓細鈥滆椤圭浉娑堚濈殑8绉嶇被鍨,浣犲浼氫簡鍚
  • 涓鏈功鐨勯〉鐮佹湁200椤,姹1鍦ㄩ〉鐮佷腑鍑虹幇鐨勬鏁,鍏紡鏄〉鐮佺殑浜斿垎涔嬩竴鍔...
    绛旓細褰撶劧鍙湁1涓紝灏辨槸111 涓夌鎯呭喌鐩稿姞 锛10-1锛*锛10-1锛+a*锛10-1锛夛紜a*锛10-1锛夛紜 锛10-1锛+锛10-1锛夛紜a+1 = 11*锛10-1锛+2a*锛10-1锛夛紜a+1 =99+19a+1 =19a+100 鍏朵腑锛岀畻涓婁簡201~299锛岃鍘绘帀19 ___楠岃瘉锛200椤垫椂锛19*2+100-19=119 鎵浠ヤ綘璇寸殑绉掓潃鏄敊鐨 ...
  • 鏁拌闂瀛﹂湼绉掓潃 鐢鍚屼綑鐨勬柟娉曟眰14鐨14娆℃柟鐨勬湯涓や綅鏁 瑕佽缁嗚В棰樿繃绋...
    绛旓細鏂规硶涓锛氱敤浣欐暟璁ㄨ 璁ㄨ14^14闄や互100鐨勪綑鏁帮紝灏辨槸瀹冪殑鏈綅鏁板瓧 100=2*5*5*2 鍥犱负14^14闄や互4浣欐暟涓2 鑰14^2闄や互25鐨勪綑鏁21 鎵浠14^14闄や互25鐨勪綑鏁版槸21^7 21^2 闄や互25鐨勪綑鏁版槸16 鑰16^3闄や互25鐨勪綑鏁版槸21 鎵浠21^7 闄や互25鐨勪綑鏁板氨鏄16^3 *21鐨勪綑鏁 缁撴灉寰16 鎵浠14^14鐨勬湯浣嶆暟瀛楁槸16...
  • 涓閬撳井鍒嗘柟绋嬬殑棰樼洰,姹傜鏉
    绛旓細榻愭鏂圭▼閫氳В dy/dx - y*tan(x)=0 dy/dx=y*tan(x)dy/y=sin(x)/cos(x)*dx dy/y=-dcos(x)/cos(x)ln(y)=-ln(cos(x))+C y=C/cos(x)闈為綈娆℃柟绋嬬壒瑙d负 y=x/cos(x) 锛屼唬鍏ユ楠 闈為綈娆℃柟绋嬬殑閫氳В涓 y=(x+C)/cos(x)浠e叆y(0)=0鐨勬潯浠跺悗鐭锛孋=0锛屾晠 y=x/cos(x...
  • 涓閬绠鍗閫夋嫨棰樻眰瀛﹂湼绉掓潃銆傚埌搴曢堿杩樻槸B杩樻槸AB
    绛旓細鐢遍鎰忓彲鐭ヤ袱姘旂几涓皵浣撶殑鐗╄川鐨勯噺鐩稿悓锛屾晠鏈 PAVA / TA = PBVB / TB 锛屽綋涓よ呯殑娓╁害鐩稿悓鏃讹紝PA锛濸B锛屾晠VA锛淰B锛屾牴鎹= m/v 鍙煡蟻A锛炏丅锛屾晠B瀹瑰櫒涓哀姘旂殑瀵嗗害杈冨皬锛庣敱浜庢皵浣撶殑娓╁害涓庡懆鍥寸幆澧冩湁鍏筹紝鏁呮棤娉曠缁熺殑鍒ゆ柇姘斾綋娓╁害鐨勯珮搴︼紝鏁匘閿欒锛庣敱浜 VA/ TA = K/ P 锛屾晠...
  • 涓閬撴暟瀛﹂,姹傜鏉
    绛旓細绛旀瑙f瀽鏈闂锛濡傛灉鎴戠殑伪鍙5蟺/4鍛紝姝ゆ椂tan伪=1锛屼絾鏄痗os伪=-1/鏍瑰彿2锛岄鐩殑鎰忔濇槸鏄惁瀛樺湪鈭犖变娇寰椾袱涓潯浠跺悓鏃舵垚绔嬨侭椤逛腑鍥犱负tan伪=1锛屾墍浠ノ辩殑鑼冨洿搴斾负锛埾/4锛+k蟺锛堥櫎鍘(蟺/2)+k蟺锛夛紝鍥犳姝ゆ椂cos伪涓嶅彲鑳戒负0锛屽洜涓篶os伪鍙栧埌0鐨勭偣锛宼an伪閮戒笉瀛樺湪銆傝寰楅噰绾筹紒
  • 鎯充簡鍗婂皬鏃堕兘瑙d笉寮,姹瀛﹂湼绉掓潃
    绛旓細涓銆60搴︾殑闃村奖闈㈢Н鍏堟眰鍗婂緞涓4鐨勫渾鐨勯潰绉啀涔樹互鍏垎涔嬩竴锛60搴︾殑闈㈢Н鏄暣涓渾鐨勫叚鍒嗕箣涓锛夊悓鐞30搴︾殑闃村奖闈㈢Н鍏堟眰鍗婂緞涓4鐨勫渾鐨勯潰绉啀涔樹互鍗佷簩鍒嗕箣涓锛30搴︾殑闈㈢Н鏄暣涓渾鐨勫崄浜屽垎涔嬩竴锛 鍐嶇浉鍔 浜屻佽緟鍔╃嚎锛氳繛鎺ユ枩杈逛笌鍗婂渾浜ょ偣鍜岀洿瑙掗偅涓偣 鍙戠幇涓榛戜竴鐧戒袱鍧楅潰绉浉绛夛紝鎶婂皬榛戞浛鎹㈡垚灏忕櫧鍐...
  • 扩展阅读:c++语言入门自学 ... c语言简单问题及答案 ... c++编程入门自学 ... c#程序员工资一般多少 ... c女生容易学吗 ... 一个完整的c++程序 ... 如何自学c++语言 ... c#简单程序实例 ... c语言自学好学吗 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网